4

我是第一次尝试 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

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

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

4

2 回答 2

1

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

document.getElementById('price').innerHTML=newPrice.toFixed(2);
于 2012-10-12T19:09:33.087 回答
0

你有浮点问题。有关详细信息,请参阅此帖子,这些问题已在此处详细介绍。基本上没有办法足够准确地映射你所拥有的东西。

于 2012-10-12T19:06:25.497 回答