提问人:qzxrt 提问时间:11/23/2022 最后编辑:player0qzxrt 更新时间:11/23/2022 访问量:130
Google 表格生成无穷小数作为整数/整数的余数
Google Sheet yields infinitesimal number as remainder of an integer/whole number
问:
我有这个工作表,我需要创建一个检查器来确定一个数字(将两个数字的总和除以另一个值 --DIVISOR 的结果)是否为整数/没有小数。在运行上述检查器时,它基本上工作正常,但似乎检测到一些项目不是整数,尽管它们是除数的精确倍数。
https://docs.google.com/spreadsheets/d/17-idS5G0kUI7JoHAx3qcJOiJ-zofmMrg93hUvZuxPiA/edit#gid=0
我有两个值(V1 和 V2),我需要将其总和除以某个数字(除数)。
我需要 OUTPUT 是整数/整数。由于除数是 SUM (V1,V2) 的倍数,因此 OUTPUT 应该是一个整数。我还扩大了小数位数,以确保小数点后没有尾随数字。
但是,在 OUTPUT 上运行 MOD 函数时,它生成了一些无穷小的值。
我还尝试截断 OUTPUT 并获取 TRUNC 和 OUTPUT 之间的差值。它产生的余数值与 MOD 结果相同。
我下载了 GSheet 并在 MS Excel 中打开了它。DIFFERENCE 结果似乎没有问题,但 MOD 函数产生了另一个值。
答:
实际上,这不是一个错误,而且很常见。它被称为浮点“错误”,简而言之,它必须与十进制数在 Google 表格(甚至是 Excel 或任何其他应用程序)中的存储方式有关
更多细节可以在这里找到: https://en.wikipedia.org/wiki/IEEE_754
为了解决这个问题,您需要引入四舍五入,例如:
=ROUND(SUM(A1:A))
这不是适用于所有情况的理想解决方案,因此根据您的要求,您可能需要使用这些解决方案,而不是:ROUND
ROUNDUP
ROUNDDOWN
TRUNC
TEXT
评论
983386.8
9933.2