我是第一次尝试使用 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 时的安全问题,但这只是光学问题。
最佳答案
问题是有些数字不能精确地表示为 float 。
如果你总是想要 2 位小数,那么你可以在你的数字上使用方法 toFixed(2)
( documentation )。
document.getElementById('price').innerHTML=newPrice.toFixed(2);
关于javascript - 在 Javascript 中添加/减去 float 时出现奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865437/