我明白,JS数学并不完美。但是我怎样才能得到正确的答案呢?因为我有一个价格为0.60美分的购物车,它们可以改变数量?不正确的乘法答案
var a=3*.6;
document.write(a);
写道:1.7999999999999998
很显然,我想写1.8
。任何想法如何做到这一点?
我明白,JS数学并不完美。但是我怎样才能得到正确的答案呢?因为我有一个价格为0.60美分的购物车,它们可以改变数量?不正确的乘法答案
var a=3*.6;
document.write(a);
写道:1.7999999999999998
很显然,我想写1.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"
写.6分数:a=3*6/10
,你会得到1.8
作为一个更一般的规则,你可以尝试四舍五入到最接近的百万分之一与
Math.round(result*1000000)/100000
,看到什么,让你。
var a=3*.6;
a = Math.round(a*10)/10;
document.write(a);
由于要舍入到地方十分之,则需要通过10乘以数量,一轮乘法最接近的整数的结果,然后由10
划分结果这不是性感,但你必须做什么,必须做。
var a=(3*(.6*100))/100;
document.write(a);
实施例:http://jsfiddle.net/aJTJq/
你想要做的是有某种类型的四舍五入的功能。
试试这个: 四舍五入功能
<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
采取有更多的例子此链接为好。希望这有助于。 干杯
令人敬畏的功能。甚至不知道它存在。我想我会用它来取代我写的格式货币的功能 –
+1很好@Joseph –
感谢您的'+'! – ray