在Javascript中添加/减去Floats时的奇怪结果

时间:2012-10-12 18:59:38

标签: javascript addition subtraction

我是第一次尝试使用JavaScript。我的目标是建立一个小“配置器”。在我的页面上,有2个按钮触发以下功能onclick

function default()
{
 curPrice = parseFloat(document.getElementById('price').innerHTML);
 newPrice = curPrice-priceEngraving;
 document.getElementById('price').innerHTML=newPrice;
}

另一个看起来像这样:

function engrave()
{
var str = document.getElementById('price').innerHTML;
newPrice = curPrice+priceEngraving;
document.getElementById('price').innerHTML=newPrice;
}

priceEngraving定义为1,#price的“默认”innerHtml为5.30。 按下按钮1时,会出现以下结果:
6.3

这没关系,预期结果(在结尾添加0不太难)。

当按下按钮#2时,会出现以下结果: 5.3000000000000004

我不知道我的代码中的问题在哪里。我还尝试了++--(我不喜欢,因为,如您所知,价格可能会发生变化)。

另外,我知道使用JavaScript时的安全问题,但这只是光学问题。

2 个答案:

答案 0 :(得分:1)

问题是某些数字不能精确表示为浮点数。 如果您总是想要2个小数位,那么您可以在数字上使用toFixed(2)documentation)方法。

document.getElementById('price').innerHTML=newPrice.toFixed(2);

答案 1 :(得分:0)

您遇到了浮点问题。有关详细信息,请参阅this post,详细介绍了这些问题。基本上没有办法准确地映射你的东西。