求教关于Excel的神奇现象,无法解释!

在Excel中输入“=round((40000.6-40000.3)*5,)”,结果为“1”,输入“=round(1.5,)”,结果为“2”,而“(40000.6-400... 在Excel中输入“=round((40000.6-40000.3)*5,)”,结果为“1”,输入“=round(1.5,)”,结果为“2”,而“(40000.6-40000.3)*5=1.5”,为何二者结果不一致?(round为Excel中的四舍五入函数) 展开
 我来答
zdingyun
2016-11-11 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48177
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部

是二进制浮点数运算结果所致。

内存对浮点数运算造成的结果。观看下列代码,运行结构大相径庭:

Private Sub Command1_Click()

    Print Round(0.3 * 5)

    Print Round(0.3) * 5

    Print Round((40000.6 - 40000.3) * 5)

    Print Round(1.5)

End Sub

所以无需吃惊。

ExcelPower
2016-11-11 · 专业Excel公式图表数据分析VBA
ExcelPower
采纳数:4495 获赞数:11863

向TA提问 私信TA
展开全部
=round((40000.6-40000.3)*5,) 40000.6-40000.3 被算成了 0.29999999999999
Excel 浮点 运算的精度问题, 参照Office官方解释:
https://support.microsoft.com/zh-cn/kb/78113

Excel 提供两种基本方法来弥补舍入误差:ROUND 函数,以及“以显示精度为准”或“将精度设为所显示的精度”工作簿选项。
方法 1:ROUND 函数
以下示例使用上面的数据,并使用 ROUND 函数强制将数字舍为五位数。这可让您成功地将结果与另一个值进行比较。A1:1.2E+200
B1:1E+100
C1:=ROUND(A1+B1,5)

结果为 1.2E+200。
D1:=IF(C1=1.2E+200, TRUE, FALSE)

结果值为 TRUE。
方法 2:以显示精度为准
在某些情况下,您可以使用“以显示精度为准”选项来防止四舍五入错误影响您的工作。此选项会强制将工作表中每个数字的值成为显示的值。要打开此选项,请按照下列步骤操作:
在 Excel 2003 和更早的版本中,在“工具”菜单上单击“选项”。
在“重新计算”选项卡上,单击“以显示精度为准”复选框以将其选中。
在 Excel 2007 中,单击“Office 按钮”,单击“Excel 选项”,然后单击“高级”类别。
在“计算此工作簿时”部分中,选择所需的工作簿,然后选中“将精度设为所显示的精度”复选框。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式