Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5097|回复: 10

[已解决]关于数组类型求助,急求

[复制链接]
发表于 2014-10-29 18:58 | 显示全部楼层 |阅读模式
16学分
本帖最后由 526753064 于 2014-10-29 19:09 编辑

附件中明明sum(arr)=sum(brr),但是就显示错误,如果是整数就对的,出现小数就就错,还有时候单元格里输入10.02,数组运算的时候就变成10.01999999997,这是什么原因,和数组类型有关吗
最佳答案
2014-10-29 21:31
消除是不可能的,这是由计算机中小数的表示方法所决定的。
计算机中数的表示是:整数(整数部份)除以2取余数,所以总可以精确表示;小数(小数部份)是乘2取整,这样一来,0.2、0.1这样数,无论乘多少次2总还有小数,所以根本无法精确表示,只有用近似数来表示
为此,判断两个小数是否相等,常常判断这两个数的差值和一个极小极小的数相比,如果比极小极小的数都还小,就可近似认为这两个数相等。
如何取极小极小的数则要看你的精度了
这就如同黄金,现在的达四个9的就可认为是纯金了,而古代却不是

求助VBA-3.rar

18.31 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-10-29 19:06 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-10-29 19:09 | 显示全部楼层
gdpgdp317 发表于 2014-10-29 19:06
附件在哪?

以上传,请帮忙,谢谢
回复

使用道具 举报

 楼主| 发表于 2014-10-29 20:21 | 显示全部楼层
好像是10.02-10之后数组里显示.19999997
回复

使用道具 举报

发表于 2014-10-29 20:58 | 显示全部楼层
又是蛋痛的小数问题
If Abs(Application.Sum(arr) - Application.Sum(brr)) > 0.0000000001 Then MsgBox ("两列金额不相等")
回复

使用道具 举报

发表于 2014-10-29 21:00 | 显示全部楼层
浮点计数造成的误差
If Round(Application.Sum(arr), 2) <> Round(Application.Sum(brr), 2) Then MsgBox "两列金额不相等" Else MsgBox "相等"
回复

使用道具 举报

 楼主| 发表于 2014-10-29 21:12 | 显示全部楼层
dsmch 发表于 2014-10-29 21:00
浮点计数造成的误差
If Round(Application.Sum(arr), 2)  Round(Application.Sum(brr), 2) Then MsgBox "两 ...

浮点计数能消除吗?运算的时候会出现10.02-10=0.1999997,我想结果实际是什么就什么,有可能是10.0002,round后面的位数怎么定
回复

使用道具 举报

 楼主| 发表于 2014-10-29 21:17 | 显示全部楼层
上清宫主 发表于 2014-10-29 20:58
又是蛋痛的小数问题
If Abs(Application.Sum(arr) - Application.Sum(brr)) > 0.000 ...

浮点计数能消除吗?运算的时候会出现10.02-10=0.1999997,我想结果实际是什么就什么,有可能是10.0002,round后面的位数怎么定
回复

使用道具 举报

发表于 2014-10-29 21:19 | 显示全部楼层
打个比方
0.9的循环和1相比较,两数是否相等?
答案是相等,证明如下:
0.9的循环=0.3的循环×3=1/3 ×3=1
以上情况,用round函数保留几位小数就可以了。
回复

使用道具 举报

发表于 2014-10-29 21:31 | 显示全部楼层    本楼为最佳答案   
消除是不可能的,这是由计算机中小数的表示方法所决定的。
计算机中数的表示是:整数(整数部份)除以2取余数,所以总可以精确表示;小数(小数部份)是乘2取整,这样一来,0.2、0.1这样数,无论乘多少次2总还有小数,所以根本无法精确表示,只有用近似数来表示
为此,判断两个小数是否相等,常常判断这两个数的差值和一个极小极小的数相比,如果比极小极小的数都还小,就可近似认为这两个数相等。
如何取极小极小的数则要看你的精度了
这就如同黄金,现在的达四个9的就可认为是纯金了,而古代却不是
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-10 13:19 , Processed in 0.301175 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表