我是第一次尝试使用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时的安全问题,但这只是光学问题。
答案 0 :(得分:1)
问题是某些数字不能精确表示为浮点数。
如果您总是想要2个小数位,那么您可以在数字上使用toFixed(2)
(documentation)方法。
document.getElementById('price').innerHTML=newPrice.toFixed(2);
答案 1 :(得分:0)
您遇到了浮点问题。有关详细信息,请参阅this post,详细介绍了这些问题。基本上没有办法准确地映射你的东西。