目前计算机上存储浮点数值照IEEE(电气和电子工程师协会)754浮点存储格式标准来存储的。IEEE单精度浮点格式共32位,包含三个构成字段:23位小数f,8位偏置指数e,1位符号s。将这些字段连续存放在一个32位字里,并对其进行编码。其中0:22位包含23位的小数f;
23:30位包含8位指数e;第31位包含符号s。也就是说上面将0.65及0.5转换出的二进制代码,我们只能存储23位,即使数据类型为double,也只能存储52位,这样大家便能看出问题出现的原因了。
截取的二进制代码已无法正确桐陆表示谈扒0.65及0.5,根据这个二进制代码肯定无法正确得局侍顷到结果0.05。
在Excel进行计算时在计算机中是转换成二进制进算然后保留数值的,所以会出现误差。
方法一:
将原公式利用round()函数将其保留固定的小数位。
方法二:
工具----选项----重新计算---勾选【以显示精度为准】
你需要的也许是这个 ?
=TEXT((B1-A1)/A1,"0%")
不掘源渣过裂谨你说的 误差 4%是怎么来的 ? 是将公式修改为 :
=TEXT((B1-A1)/100,"0%")
这个判悄样子吗 ?
就是两个数的差,把这个差当做百分数?C1=ABS(A1-B1)&"%"
公式为:
=(B1-A1)/A1
误差没有负数吧。
=TEXT(MAX(A1:B1)-MIN(A1:B1),"0%")