Errori comuni con l'aritmetica javascript [chiusa]

5

Mi sono imbattuto in diverse stranezze usando l'aritmetica in virgola mobile in javascript, ma non riesco mai a ricordarle in cima alla mia testa!

Quali sono alcuni errori comuni quando usi JavaScript per fare matematica?

    
posta Derek Adair 22.12.2010 - 06:31
fonte

2 risposte

7

I problemi comuni con l'aritmetica javascript si riferiscono all'uso di parseInt o alla mancanza di.

Non utilizzare il radix quando si convertono stringhe in numeri interi:

parseInt("0137"); // 95!
parseInt("0137", 10); // 137

Non si usa parseInt con aritmetica:

var a = "2";
alert(a + 5); // 25
alert(a - 5): // -3!

Aritmetica in virgola mobile malinteso (valida per tutte le lingue, non solo per JS):

alert(23 * 1.40 == 32.2); // false, 23 * 1.40 is represented as 32.199999999
alert((23 * 1.40).toFixed(1) == 32.2); // true

Il calcolo della valuta con punti mobili può causare errori di arrotondamento, i valori di valuta devono essere trattati come numeri interi (moltiplicati per 100) prima dell'elaborazione.

    
risposta data 22.12.2010 - 09:56
fonte
4

Un errore comune (anche se con stringhe e interi, non float) sta dimenticando che JavaScript non ha una strong digitazione. Quindi puoi imbatterti in situazioni in cui:

var myVar = 7;       // 7
myVar += 5;          // 12

var myVar = "7";     // 7
myVar += 5;          // 75

var myVar = "cat";   // cat
myVar += 5;          // cat5

Tutte queste sono affermazioni perfettamente valide in JavaScript.

Ma diventa più strano, perché mentre "7" e "cat" sono entrambe le stringhe, non tutte le stringhe sono trattate allo stesso modo:

var myVar = 77;
parseInt(myVar);     // 77

var myVar = "77";
parseInt(myVar);     // 77

var myVar = "cat";
parseInt(myVar);     // NaN

var myVar = "77cat";
parseInt(myVar);     // 77

Per non parlare di ciò (come ha scritto @Tatu):

var myVar = "077";
parseInt(myVar);     // 63
    
risposta data 23.12.2010 - 06:22
fonte

Leggi altre domande sui tag