求可靠、稳定四舍五入函数

zero16 2003-09-16 02:29:38
求可靠、稳定四舍五入函数
试过几个都不太好
Fix((dblValue + 0.5 / (10 ^ (iDigits + 0))) * (10 ^ iDigits)) / (10 ^ iDigits)

大家给个函数!谢了!!
...全文
147 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingtian2008 2003-11-27
  • 打赏
  • 举报
回复
up
shisanjin 2003-11-27
  • 打赏
  • 举报
回复
int(i+0.5)
haisuifeng 2003-11-27
  • 打赏
  • 举报
回复
fuxc(Michael(闭关修炼ing))

看看 这个
round(cdec(0.045),2)=0.04
round 的用法
如果小数点后第2为偶数 第3位5 则 不进
怎么解决这个问题
juror 2003-11-27
  • 打赏
  • 举报
回复
up
海牛 2003-11-27
  • 打赏
  • 举报
回复
学习ing
qibo2002 2003-11-27
  • 打赏
  • 举报
回复
cint 不行啊

cint(2.5) = 2
fuxc 2003-09-23
  • 打赏
  • 举报
回复
能够在10进制下除尽的分数,在2进制下不一定能够除尽,
fuxc 2003-09-23
  • 打赏
  • 举报
回复
翻旧贴发现错误~~~~~~

能够被10除尽的数,不一定能够被2除尽,
改为
能够被在10进制下除尽的数,在2进制下不一定能够除尽,
xiaohei728 2003-09-21
  • 打赏
  • 举报
回复
没想到小问题中有大学问


今天又学了一招谢谢
fuxc 2003-09-21
  • 打赏
  • 举报
回复
vb四舍五入不准确的问题,以前专门有贴子讨论过,不过CSDN好像把老贴都去掉了??

所谓“四舍六入五留双”的提法是错误的,
四舍五入不准确,是因为二进制浮点数跟十进制数之间的误差造成的,微软知识库里面专门对此问题有说明。

对于整数,二进制跟十进制是可以一一对应换算的,
但对于分数,二进制数是不能跟十进制数一一对应的,
因为能够被10除尽的数,不一定能够被2除尽,
这样就造成有些十进制小数转换浮点数时出现误差,
如果喜欢在Sql Server里面使用float,real数据类型的,肯定经常会观察到这样的情况。

四舍五入的误差,也是这样造成的。

其实这个问题不光在vb里面有,就算是汇编也有,intel还专门出过声明,说明这是正常结果,而不是cpu错误。

虽然微软知识库里面推荐用format来解决这一问题,
但个人认为,还是用cdec转换数据类型以后再round为正解。
原因:
dec就是十进制,vb6未提供十进制数据类型,提供cdec函数就是为了处理这样的情况。

毕竟format函数不是专门为四舍五入做的,就象上面ch21st(风尘鸟)提供的情况,xp可能就无效(本认未验证)
OrangeSeaCoast 2003-09-20
  • 打赏
  • 举报
回复
用CINT或CLNG就可以了
doudou8090 2003-09-20
  • 打赏
  • 举报
回复
加0.5 然后INT就可以了
strongfisher 2003-09-18
  • 打赏
  • 举报
回复
用format函数吧
zero16 2003-09-18
  • 打赏
  • 举报
回复
用Cint取整后是四舍五入
如:
cint(1.5)返回 2
int(1.5) 返回 1
道素 2003-09-16
  • 打赏
  • 举报
回复
如果不是winxp系统,最简单的办法VB已经提供了,FORMAT(123456.789,"###,###.##")函数,这可是真的四舍五入,而不是四舍六入五留双啊!但是发现在WINXP中FORMAT函数达不到预期的效果了,装了SP也不见效
NotReady 2003-09-16
  • 打赏
  • 举报
回复
你用CLNG或者CINT试试看
viena 2003-09-16
  • 打赏
  • 举报
回复
INT只能得到整数,如果要保留小数呢?
lwm1977 2003-09-16
  • 打赏
  • 举报
回复
Round()
yijiansong 2003-09-16
  • 打赏
  • 举报
回复
数字加0.5 然后INT就可以了
sindyzhou 2003-09-16
  • 打赏
  • 举报
回复
format(i,"#,##0")

带千分位的四舍五入
加载更多回复(3)

7,789

社区成员

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

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