小编Che*_*het的帖子

德尔福如何在乘法过程中舍入货币

rate : Currency;
mod1 : Currency;
mod2 : Currency;
mod_rate : Currency;

rate := 29.90;
mod1 := 0.95;
mod2 := 1.39;

mod_rate := rate * mod1 * mod2;
Run Code Online (Sandbox Code Playgroud)

如果您在计算器上执行此计算,则会得到值39.45295.由于Delphi的Currency数据类型仅精确到4位小数,因此内部对该值进行舍入.我的测试表明它使用了Banker的舍入,因此mod_rate应该包含一个值39.4530,但是在这种特殊情况下它会截断为39.4529.

我有40,000个这些计算,除上述情况外都是正确的.这是一个向上舍入的例子:

rate := 32.25;
mod1 := 0.90;
mod2 := 1.15;
Run Code Online (Sandbox Code Playgroud)

这相当于33.37875一个计算器,根据Banker的四舍五入33.3788,这就是德尔福所做的.

有人可以了解德尔福在这里做了什么吗?

delphi rounding

4
推荐指数
1
解决办法
589
查看次数

标签 统计

delphi ×1

rounding ×1