0

请参考下面的代码。

    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()方法。我该如何解决这个问题?

4

2 回答 2

0

尝试乘以 10,固定为小数并除以 10。

使用 :

Math.round((1956.9 +0.4)*10)/10           // Output 1957.3

或者简单地说:

(((1956.9 + 0.4)*10)<<0)/10               // Output 1957.3
于 2013-03-25T09:45:34.073 回答
0

如前所述,这种不确定性是浮点数所固有的,javascript 只支持浮点数而不是整数。但是,如果您的舍入误差在 1957.3000000000001 区域内,并且您关心的最精确计算在 1957.0004 区域内,那么您可以避免数百万次计算,而不必担心舍入误差会显着影响您的结果。

于 2013-03-25T10:43:49.610 回答