验证中...
本周日,苏州开源盛宴,一起聊聊:Devops、K8s、数据库建模、SoLiD、.Net Core、微信开发、去中心化… 点击占座。
语言: Pascal
分类: 算法分析
最后更新于 2018-12-09 10:10
四舍六入五成双
原始数据 复制代码
uses
System.Math;
// Math 单元的 RoundTo 函数就是四舍六入的,但是并不总是有效,所以利用了 Round 函数四舍六入的特点编写了 RoundToEx 函数
// LikeExcel 为 False 时,用法与 RoundTo 函数一致,为Ture时,用法与 Excel 中 Round 函数用法一致。
// 另外,XE7 已经修复了 RoundTo 函数,具体从哪个版本开始修复暂未测试。
// XE7 RoundTo 函数的小数位的范围是[-20,20],超出会抛异常。RoundToEx 函数测试到[-40,40]仍正常,当然,执行效率肯定没有原生的快。
function RoundToEx(Number: Extended; Digits: Integer; LikeExcel: Boolean = False): Extended;
begin
if LikeExcel then
begin
if Digits > 0 then
Result := Round(Number * Power(10, Digits)) / Power(10, Digits)
else
Result := Round(Number / Power(10, Abs(Digits))) * Power(10, Abs(Digits));
end
else
begin
if Digits > 0 then
Result := Round(Number / Power(10, Digits)) * Power(10, Digits)
else
Result := Round(Number * Power(10, Abs(Digits))) / Power(10, Abs(Digits));
end;
end;

评论列表( 0 )

你可以在登录后,发表评论

搜索帮助

14_float_left_people 14_float_left_close