我明白JS数学并不完美。但我如何格式化以获得正确答案,因为我有一个购物车项目,成本为.60美分,他们可以改变数量?
var a=3*.6;
document.write(a);
写1.7999999999999998
显然我想写1.8
。任何想法如何实现这一目标?
答案 0 :(得分:11)
使用toFixed
将其四舍五入:
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"
答案 1 :(得分:1)
var a=3*.6;
a = Math.round(a*10)/10;
document.write(a);
由于你想要舍入到第10位,你需要将数字乘以10,将乘法的结果四舍五入到最接近的整数,然后将结果除以10.
这不是性感,但你必须做什么做什么。
答案 2 :(得分:1)
var a=(3*(.6*100))/100;
document.write(a);
示例: http://jsfiddle.net/aJTJq/
答案 3 :(得分:0)
将.6写为分数:a=3*6/10
,得到1.8
作为更一般的规则,你可以尝试四舍五入到最接近的百万分之一
Math.round(result*1000000)/100000
并看到了什么让你感到高兴。
答案 4 :(得分: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
此链接上还有更多示例。希望这会有所帮助。 干杯