VB大BUG!!!

madfish 2000-06-07 10:55:00
在 vb6 试一试:
round(0.5) = 0 : bug!!
round(1.5) = 2 : OK!
不知阿软是怎么搞的!!

vb5 好像也是如此.
vb3 反而 round(0.5) = 1
...全文
313 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
madfish 2000-06-12
  • 打赏
  • 举报
回复
看来俺真的是孤陋寡闻了!
查看Delphi的 Round 函数, 有说明:
If X is exactly halfway between two whole numbers, the result is always the even number.
就是说: ROUND(0.5) = 0, ROUND(1.5) = 2, ROUND(2.5) = 2, ROUND(3.5) = 4

明白了!不过为什么 MS SQL, EXCEL 中的 Round 函数不是这样定义呢?
在 MS SQL, EXCEL 中 ROUND(0.5, 0) = 1, ROUND(1.5,0)=2, ROUND(2.5,0)=3
真是越搞越糊涂!!
看来以后用这个函数要仔细看帮助的说明了!!况且, VB6的帮助好像就没有提到这一点!
yokel 2000-06-11
  • 打赏
  • 举报
回复
对于小数点后末位是5,是升还是舍,我同意mafangsan的意见
其实学理科的人不应该不知道,去翻翻分析化学书吧,说得很详细。
RuFeng 2000-06-11
  • 打赏
  • 举报
回复
其实我觉得象这样简单的程式,如果不习惯就自己写一个代替吧!不会超过五行程式就可以实现了。
wqpaul 2000-06-10
  • 打赏
  • 举报
回复
wulang 我觉得你说的不对,0.0-0.49999999.... 与0.5-0.999999999..... 的区间长度是一样的我觉得是实现上的问题,或者根本叫做bug。
wulang 2000-06-10
  • 打赏
  • 举报
回复
这并不是什么美国人的习惯,这样做是为了平衡误差。
如果按照一般的四舍五入,你就会发现:1-4舍去,5-9进位,很明显进位的几率要比舍去的多,这样误差就会偏向大的一边。而采取奇进偶不进的方法就可避免这种误差偏移。
wulang 2000-06-10
  • 打赏
  • 举报
回复
进位时,取舍位是0时是不用考虑的.
RuFeng 2000-06-09
  • 打赏
  • 举报
回复
看一看这才是bugs呢?小见多怪,对于中文的支持不好:
1.无论你是英文版本和中文版本,用richtextbox控件时,当你输入了中文后,再关了输入法,输入英文,再打开输入法输入中文,马上乱码。。。。。。。哈哈。。。。。。。。,但这在text控件不会有这事发现。
2.一个DAO的bugs,这个bugs很隐蔽,不是我写这样的程式不会发现:
当你用DAO打开一个数据库后,再打开一个表,关闭一个表,再打开一个表,关闭一个表,
这样无论你做多少次,理论上应该是每一次打开表后,它的指针一定会指向表的第一行才对,但我发现当上面的操作一多,就会出现指针指向了中间的地方,就好象中间的一部分插到了第一行之前,奇怪。。。。。。。。。。。哈哈。。。。。。。。。bugs,令到我要用一段程式来检测这个bugs,发现后,关闭表,再打开,再关闭,再打开,直到是第一行为止,真是MS====bugs。。。。。。。没错!!
kongming 2000-06-09
  • 打赏
  • 举报
回复
好象是美国人的习惯
yangxz 2000-06-09
  • 打赏
  • 举报
回复
请教 mafangsan和wulang, 这样进位是什么道理?
mafangsan 2000-06-08
  • 打赏
  • 举报
回复
你不懂对尾数为5时奇进偶不进么?^_^
madfish 2000-06-08
  • 打赏
  • 举报
回复
真的不知道!
见识了!
为什么呢?
打小只知道四舍五入 :(
哎,落后了!! :((
wulang 2000-06-08
  • 打赏
  • 举报
回复
同意mafangsan,这并不是Bug

741

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧