为什么 `=floor((189-0.9*201)/(0.9))` 是 8?

问题描述 投票:0回答:2

为什么

=floor((189-0.9*201)/(0.9))
是8?

正确答案是9

enter image description here

这导致了巨大的问题以及数小时的调试和令人头疼的事情

如您所见,这可能会导致很大的累积误差。

  • 为什么会这样?
  • 如何防止 Google Sheet 中出现此类情况?
excel google-sheets excel-formula
2个回答
0
投票

那是因为 Google Sheet 在 Javascript 中运行。

Javascript代码:

Math.floor(((189-0.9*201)/(0.9)))

产量也为8。

那是因为

(((189-0.9*201)/(0.9))) is 8.999999999999993
由于浮动误差精度。

因此,你可以这样做:

=floor(round((189-0.9*201)/(0.9), 9))

0
投票

消除此类错误的一种方法是尽可能多地使用整数。 显然这可能很乏味。

这个方程

=floor((1890-9*201)/(9))
确实可以在谷歌表格中解析为9

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.