Visualizzazione risultati 1 fino 6 di 6

Discussione: in JavaScript non mi riesce il confronto fra numeri negativi

  1. #1
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito in JavaScript non mi riesce il confronto fra numeri negativi

    Ho due valori "a" e "b"
    li devo confrontare per vedere quale sia il piu' grande.

    QUANDO sono entrambi positivi -> tutto OK
    QUANDO sono uno positivo e l'altro negativo -> OK
    QUANDO sono entrambi NEGATIVI -> mi dice che il piu' grande e' quello negativo piu' grande (che pero' sarebbe il piu' piccolo).

    ESEMPIO:
    a = -2.7
    b = -0.3

    mi dice che a e' MAGGIORE.

    Ho cercato in rete ma non si parla di confronto fra numeri negativi (in JS). Almeno non ho trovato nulla dopo 2 ore di ricerca.

    Il comportamento e' corretto oppure c'e' qualcosa da sistemare ?


    GRAZIE INFINITE

  2. #2
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Come stai effettuando il controllo? (Magari posta il codice)
    Io ho provato a fare: alert(-0.3 > -2.7) e mi restituisce true...

    Saluti!

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Sembra che tu stia confrontando i numeri come stringhe e non come valori numerici. Da questo punto di vista, il comportamento non sarebbe sbagliato: il carattere "2" è posteriore allo "0"... (diverso sarebbe se tu confrontassi -2 con -10, il risultato sarebbe corretto... ma solo perché "2" è posteriore anche a "1").

    Se non è questo il comportamento che ti aspetti (a quanto ho capito è così), puoi provare a:
    - eseguire una sottrazione (togliendo ovviamente 0) sui numeri, prima di confrontarli (l'addizione non va bene perché, se fossero stringhe, le concateneresti)
    - "tradurre" le stringhe in numeri, utilizzando le funzioni parseInt() (per gli interi) o parseFloat() (per i decimali).

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito

    vi rispondo per quanto nelle mie capacita':

    il codice e' un banalissimo:

    Codice:
    if (a > b) {
    istruzioni
    }else{
    istruzioni
    }
    i valori di a e b sono presi tramite un FORM con campi INPUT TYPE='text'.

    Quando ho fatto la prova ho inserito i valori sopra esposti, cioe' -2.7 e -0.3 .

    Se vi serve altro sono qua.

    Intanto GRAZIE


    AGGIUNGO ho provato a modificare aggiungendo la funzione "parseFloat" che trasforma una stringa in numero

    Codice:
    if (parseFloat(a) > parseFloat(b)) {
    istruzioni
    }else{
    istruzioni
    }
    Pero' il risultato e' il medesimo (-2.7 > -0.3)

    ANCORA se faccio confrontare -2.7 e 0, da la risposta corretta, ossia che "-2.7 e' minore di 0".

    --------------------------------------------------------

    RISOLTO : con il parseFloat (evidentemente faceva il confronto come stringhe come avete detto).
    GRAZIE ANCORA
    Ultima modifica di esotica : 24-11-2009 alle ore 11.08.17

  5. #5
    Guest

    Predefinito

    Grazie, stavo impazzendo anche io con queste funzioni matematiche... effettivamente funziona, ma quando deve confrontare 0, a me riporta un valore errato. A te come funziona?

  6. #6
    esotica non è connesso Utente giovane
    Data registrazione
    08-05-2008
    Messaggi
    87

    Predefinito

    ho provato adesso e mi sembra che sia tutto a posto. Che errore ti riporta ?
    eventualmente posta il codice e tutto il necessario, cosi' gli esperti del forum ti aiutano.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •