请参阅以下代码。
currentAxis.Range.Start = 1956.9
tempInterval = currentAxis.Range.Start
currentAxis.Range.Interval = 0.4
tempInterval += currentAxis.Range.Interval;
它将返回值1957.3000000000001
而不是1957.3
。我不想使用toFixed()
方法来删除点的十进制值,因为有时间隔值将为0.0004
,此时它将在该点之后返回4位数。根据间隔,它会有所不同。
我需要1956.9 +0.4= 1957.3
而不使用toFixed()
方法。我该如何解决这个问题?
答案 0 :(得分:0)
尝试乘以10,修正为十进制和&除以10。
使用:
Math.round((1956.9 +0.4)*10)/10 // Output 1957.3
或简单地说:
(((1956.9 + 0.4)*10)<<0)/10 // Output 1957.3
答案 1 :(得分:0)
如前所述,这种不确定性是浮点数固有的,javascript only supports floating point numbers不是整数。但是如果您的舍入误差在1957.3000000000001区域,并且您关心的最精确计算在1957.0004区域,那么您可以在必须担心舍入误差显着影响结果之前进行数百万次计算。