Domanda

Che tipo di errori? Come lo risolvo?

1.1 - 1 = 0.10000000000000009

1.0000001+1 = 2.0000001000000003

È stato utile?

Soluzione

Puoi risolverlo usando .toFixed() metodo
È il problema del punto galleggiante Dai un'occhiata qui

per esempio:

<script>
alert((1.234567890).toFixed(2))
</script>

Altri suggerimenti

JavaScript utilizza il tipo di dati galleggiante. I numeri galleggianti non sono mai esatti, quindi non utilizzare == quando si confrontano i dati invece utilizza <e/o>.

Dal comp.lang.javascript FAQ(che sembrano essere al momento):

I numeri ECMAScript sono rappresentati in binario come IEEE-754 (IEC 559) raddoppia, con una risoluzione di 53 bit, che dà una precisione di 15-16 cifre decimali; numeri interi fino a poco più 9e15 sono precisi, ma poche frazioni decimali lo sono. Detto questo, l'aritmetica è il più esatto possibile, ma non più. Le operazioni sui numeri interi sono esatti se il vero risultato e tutti gli intermedi sono numeri interi all'interno di tale intervallo.

In particolare, i risultati non interi non dovrebbero essere normalmente confrontati per l'uguaglianza e i risultati calcolati non interi hanno comunemente bisogno di arrotondamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top