2013-05-17 25 views
9

Voglio fare moltiplicazione usando javascript.Quando moltiplico 2 e 0.15 ho ottenuto 0.3 ma quando moltiplico 3 e 0.15 ho ottenuto 0.44999999999999996 Voglio ottenere 0.45 come risultato.Come posso farlo con javascript?Moltiplicazione int e float in javascript

+1

Non c'è 'int' o' float' in JavaScript. Tutto è un "doppio". Detto questo, stai cercando ['toFixed()'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toFixed) se vuoi convertire il tuo valore in una stringa. – Zeta

+0

http://en.wikipedia.org/wiki/Floating_point – Sirko

+0

Come posso ottenere un risultato di 0.45 per la moltiplicazione 0.15 e 3? –

risposta

12

È un errore di arrotondamento. Si consiglia di arrotondare il proprio numero per un importo fisso di cifre, in questo modo:

parseFloat((your_number).toFixed(2)); 
+1

È bello, ma produce un FWIW stringa! –

+0

So parsefloat it – mplungjan

+0

@mplungjan Sì, lo so, OP potrebbe non farlo. –

4

Purtroppo questo accade in qualsiasi lingua usando aritmetica in virgola mobile. È un artefatto che si verifica quando le operazioni in virgola mobile vengono codificate in binario, le operazioni eseguite e decodificate da binari per riportare la risposta in un formato che ci si aspetterebbe.

A seconda di ciò che si desidera fare con l'output, è possibile chiamare una funzione round() per arrotondare a un numero di posizioni decimali o confrontare l'output con un valore utilizzando un numero (piccolo) chiamato una tolleranza . Per esempio. due numeri sono considerati uguali se la loro differenza assoluta è inferiore a questa tolleranza.

+0

grazie a sacco :) –