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,这就是德尔福所做的.
有人可以了解德尔福在这里做了什么吗?