乘法答案不正确

时间:2011-09-21 01:35:06

标签: javascript

我明白JS数学并不完美。但我如何格式化以获得正确答案,因为我有一个购物车项目,成本为.60美分,他们可以改变数量?

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

1.7999999999999998

显然我想写1.8。任何想法如何实现这一目标?

5 个答案:

答案 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/

  1. 乘以.6乘以100得到60美分
  2. 乘以3
  3. 除以100将其作为美元数字返回

答案 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

此链接上还有更多示例。希望这会有所帮助。 干杯