Round函数有Bug吗?

griefforyou 2002-07-01 04:09:38
以下结果 在Debug窗口中得到

?"1.255->" & round(1.255,2)
1.255->1.25

?"2.255->" & round(2.255,2)
2.255->2.26

?round(1.035,2)
1.03

?round(1.0351,2)
1.04

?round(1.135,2)
1.14

百思不得其解.........
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
griefforme 2002-09-19
  • 打赏
  • 举报
回复
结贴咯~~~~~~~~~~~~~~~~~~~
griefforyou 2002-07-01
  • 打赏
  • 举报
回复
?round(1.015,2)

1.01

这个怎么说呢?
footballboy 2002-07-01
  • 打赏
  • 举报
回复
我这样理解,若需要舍入到的位的后面"小于5"或"大于5"的话,按通常意义的四舍五入处理.若"若需要舍入到的位的后面"精确等于5",则舍入后末位为偶数,举例
MsgBox "round(1.25,1)=" & Round(1.25, 1)
显示结果为1.2,因为1.2之后的尾数"精确等于5",舍入后末位要求是偶数,所以舍入结果是小数1.2而不是大数1.3
MsgBox "round(1.25001,1)=" & Round(1.25001, 1)
显示结果为1.3,因为1.2之后的尾数"大于5",按四舍五入处理
MsgBox "round(1.35,1)=" & Round(1.35, 1)
显示结果为1.4,因为1.2之后的尾数"精确等于5",舍入后末位要求是偶数,所以舍入结果是大数1.4而不是小数1.3
同理
MsgBox "round(1.345,2)=" & Round(1.345, 2)
MsgBox "round(1.355,2)=" & Round(1.355, 2)
显示结果分别是1.34和1.36

我总结出的舍入规律是"四舍六入五成双",这里"四"是小于五的意思,"六"是大于五的意思,"五"是舍入位之后的尾数"恰等于5".

换一种说法:"小舍大入等取偶"

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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