Google Sheets中MOD()&"*"出现异常余数的原因及单列解决方法
Google Sheets 盎司转磅+盎司:MOD拼接异常问题解决
问题原因
这是浮点数精度误差导致的。Google Sheets采用双精度浮点数存储数值,部分十进制整数在二进制浮点数体系中无法被精确表示,只是表格显示时自动做了四舍五入处理。单独调用MOD()时,表格会自动修正显示精度,输出正确整数;但拼接成文本时,会直接输出浮点数的原始存储值,就出现了类似0.0000000000001或15.9999999999999的奇怪余数。
单列解决方法
以下几种公式都能在单列内完成转换并避免误差:
用
ROUND修正精度后拼接:=ROUND(MOD(D2,16),0)&" oz."通过
ROUND(MOD结果, 0)把浮点数误差四舍五入到整数,再拼接单位。用
TEXT格式化输出整数:=TEXT(MOD(D2,16),"0")&" oz.""0"格式会自动将带误差的浮点数转换为整数文本,再拼接单位。用整数运算替代MOD:
=(D2 - INT(D2/16)*16)&" oz."先计算总盎司数对应的整磅数(
INT(D2/16)),再用总盎司数减去磅对应的盎司数,直接得到精确的余数,完全避开浮点数误差。
如果要同时显示磅和盎司,完整公式可以参考:
=INT(D2/16)&" lb. "&(D2 - INT(D2/16)*16)&" oz."
内容的提问来源于stack exchange,提问作者EvangeliusAg
相关产品推荐
相关产品推荐

