round的返回值怎么并没有round

fxbird 2003-09-26 01:58:03
为什么
real res
res=round(215/1614,3)
res的结果是0.1330000013113022,而不是0.133
...全文
46 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxbird 2003-09-26
  • 打赏
  • 举报
回复
还是不对,并不能返回3位,而是十多位,我也没具体数,比如:real res
res=Truncate(round(2/3,3),3)
mle_1.text=string(res)
结果是0.6669999957084656,而实际上应该是0.667,最次也应该是0.666,结果却怎么样。
double22822 2003-09-26
  • 打赏
  • 举报
回复
Truncate(round(215/1614,3),3)我认为是对的,round(215/1614,3)已经取得了三位小数,Truncate在此小数的基础上取3位,不会有误差。
fxbird 2003-09-26
  • 打赏
  • 举报
回复
to eminena:
Truncate(round(215/1614,3),3)不还是一样么,只不过换了一种写法,decimal{3} res应该也是这个作用,有没有能保证四舍五入的方法?
mittee 2003-09-26
  • 打赏
  • 举报
回复

decimal{3} res 也行。
eminena 2003-09-26
  • 打赏
  • 举报
回复
Truncate(round(215/1614,3),3)
fxbird 2003-09-26
  • 打赏
  • 举报
回复
这样的话,要round还有什么用?
“以 real 最大位数随机填充”的“随机”是什么意思?如何设置呢?
我如果把结果不赋值res,而是直接转换成字符串的话,就是正确的,但是赋值,就不正确
fxbird 2003-09-26
  • 打赏
  • 举报
回复
而且truncate只是简单地截断,而不是四舍五入,偏差太大
eminena 2003-09-26
  • 打赏
  • 举报
回复
round(8.45612,2),返回的值是8.46,但因为res 是 real 类型,所以,保存的时候,又以 real 最大位数随机填充.
可在显示格式里设置.
fxbird 2003-09-26
  • 打赏
  • 举报
回复
但round(215/1614,3)已经返回了三位的小数啊
eminena 2003-09-26
  • 打赏
  • 举报
回复
因为, res 是 real 类型,所以,在保存时保留最大的小数位。

以这种方式调用:
Truncate(res)

1,077

社区成员

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

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