这个ROUND到底是做什么的?

lxl 2003-09-15 11:54:41
原来还以为是四舍五入,但是
round(13.5)=14
round(14.5)=14???? 错
round(15.5)=16
...全文
58 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxl 2003-09-16
  • 打赏
  • 举报
回复
恍然大悟,但这样的习惯和用户的习惯不同,只好自己写FUNCTION了
Devlopered 2003-09-16
  • 打赏
  • 举报
回复
学习
dulei115 2003-09-16
  • 打赏
  • 举报
回复
DWGZ() 高人!
DWGZ 2003-09-16
  • 打赏
  • 举报
回复
这种Round是权威的算法, 也是宝兰说的银行家算法, 统计学上一般都用这种算法

四舍六入五看前, 就是看五前面是什么, 也就是奇进偶不进, 它总是返回一个偶数值
宝兰帮助这样说

X is a real-type expression. Round returns an Int64 value that is the value of X rounded to the nearest whole number. If X is exactly halfway between two whole numbers, the result is always the even number.
DWGZ 2003-09-15
  • 打赏
  • 举报
回复
乱讲!!!!

四舍六入五看前
FrameSniper 2003-09-15
  • 打赏
  • 举报
回复
呵呵,还没有注意过!
yoisyois 2003-09-15
  • 打赏
  • 举报
回复
the following is from 《超级猛料》.


Delphi的四舍五入函数Round有BUG,无法正常工作。

对于XXX.5的情况,整数部分是奇数,那么会Round Up,偶数会Round Down,例如:

x:= Round(17.5) = x = 18

x:= Round(12.5) = x = 12

请使用下面的函数代替Round:

function DoRound(Value: Extended): Int64;

procedure Set8087CW(NewCW: Word);

asm

MOV Default8087CW,AX

FNCLEX

FLDCW Default8087CW

end;

const

RoundUpCW = $1B32;

var

OldCW : Word;

begin

OldCW := Default8087CW;

try

Set8087CW(RoundUpCW);

Result := Round(Value);

finally

Set8087CW(OldCW);

end;

end;

dulei115 2003-09-15
  • 打赏
  • 举报
回复
又一个bug
lxl 2003-09-15
  • 打赏
  • 举报
回复
TO DWGZ():

“五看前”是什么意思?
qiume 2003-09-15
  • 打赏
  • 举报
回复
呵呵,好玩喽

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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