2011-09-21 77 views
2

我明白,JS数学并不完美。但是我怎样才能得到正确的答案呢?因为我有一个价格为0.60美分的购物车,它们可以改变数量?不正确的乘法答案

var a=3*.6; 
document.write(a); 

写道:1.7999999999999998

很显然,我想写1.8。任何想法如何做到这一点?

回答

8

只需使用toFixed就可以使其变为ba CK:

var a = 3*.6; 
document.write(a.toFixed(2)); 

如果你需要它作为一个数字,只是之前它添加一个+标志:

var a = 3*.6; 
console.log(+a.toFixed(2)); // Logs: 1.8, instead of "1.80" 
+0

令人敬畏的功能。甚至不知道它存在。我想我会用它来取代我写的格式货币的功能 –

+0

+1很好@Joseph –

+0

感谢您的'+'! – ray

0

写.6分数:a=3*6/10,你会得到1.8

作为一个更一般的规则,你可以尝试四舍五入到最接近的百万分之一与
Math.round(result*1000000)/100000,看到什么,让你。

1
var a=3*.6; 
a = Math.round(a*10)/10; 
document.write(a); 

由于要舍入到地方十分之,则需要通过10乘以数量,一轮乘法最接近的整数的结果,然后由10

划分结果这不是性感,但你必须做什么,必须做。

1
var a=(3*(.6*100))/100; 
document.write(a); 

实施例:http://jsfiddle.net/aJTJq/

  1. 乘以100 0.6,以获得60美分
  2. 乘上3
  3. 除以100它以使其返回作为美元的数字
0

你想要做的是有某种类型的四舍五入的功能。

试试这个: 四舍五入功能

<script language="javascript" type="text/javascript"> 
function roundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places 
    var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); 
    document.roundform.numberfield.value = parseFloat(newnumber); // Output the result to the form field (change for your purposes) 
} 
</script> 

然后像这样调用函数

<form name="roundform"> 
<input type="text" name="numberfield" value=""> 
<input type="button" value="Round" onClick="roundNumber(numberfield.value, 2);"> 
</form> 

这个例子只是需要在文本字段输入一个数字,并确保它是四舍五入到小数点后两位。

这是从http://www.mediacollege.com/internet/javascript/number/round.html

采取有更多的例子此链接为好。希望这有助于。 干杯