excel - Excel 向上舍入一条记录中的数字,向下舍入另一条记录中的相同数字
问题描述
Excel 不一致地舍入数字,这导致了我的问题。使用 ROUND() 时,有时会将特定数字向上舍入,而有时会将相同的值向下舍入。
我尝试将 Excel 设置为在设置中显示确切的值,但它不会改变任何东西。
这是正在发生的事情的一个例子。
这是简单的公式 ROUND((A1-B1)/2,4)
对于一条记录,我的值 (.3159 - .3152) 计算为 0.0007,然后除以 2 得到 0.00035。
对于下一条记录,我的值 (.3554 - .3547) 也计算为 0.0007,除以 2 结果为 0.00035
因此,即使当我四舍五入到小数点后 4 位时,这两个值都是 0.00035,但我得到一个为 0.0003,另一个为 0.0004。相同的数字,四舍五入到相同的位数,两个不同的结果。我怎样才能解决这个问题?
解决方案
这是浮点数固有的问题,无法解决,只能避免。
在 Excel 中尝试这些测试:
=(0,3159-0,3152)=(0,3554-0,3547)
给你FALSE
。
=(0,3159-0,3152)-(0,3554-0,3547)
给你类似的东西5.55112E-17
。
如果您不能接受差异,则应该在计算中间进行舍入,而不仅仅是在末尾:
=ROUND(0.3159-0.3152,4)=ROUND(0.3554-0.3547,4)
是TRUE
=ROUND(0.3159-0.3152,4)-ROUND(0.3554-0.3547,4)
是0
延伸阅读:浮点运算稳定吗?和Binary floating point and .NET,由备受推崇的 Jon Skeet 撰写。
推荐阅读
- spring - Springboot 和 Mongo 容器没有连接
- c# - 连接 ListView 和 Image
- r - 重新审视 data.table 与 dplyr 的内存使用
- javascript - 类型错误:top20 不可迭代
- javascript - 尝试使用 getDownloadUrl 时,列出所有使用 firebase 存储的文件给我 404
- python - 这个 lambda 如何反转字符串?
- lisp - 为什么“让”添加换行符?(我可以摆脱它吗?)
- python - 为什么 pandas excel writer 不会写入我的文件路径?
- python - 通过在 python 中使用它的字符串名称创建一个类的实例
- swift - 访问最近存储的文件(文件“插入文件”无法打开,因为没有这样的文件)