Ms access 函数MS Access VBA

Ms access 函数MS Access VBA,ms-access,vba,rounding,Ms Access,Vba,Rounding,我正在从中实现AsymArith round方法 现在我在Int()函数中遇到了一个奇怪的问题:它应该只去掉小数部分,但它也改变了整数部分 ? 131.415 * 100 + 0.5 13142 ? Int(131.415 * 100 + 0.5) 13141 有人能解释为什么Int()函数会更改表达式的结果吗?可能是类型转换(dissite)导致的即时窗口的魔力 ?类型名称(131.415*100+0.5)为双精度) 它与int函数的内部舍入机制有关 例如: print Int(13

我正在从中实现AsymArith round方法

现在我在Int()函数中遇到了一个奇怪的问题:它应该只去掉小数部分,但它也改变了整数部分

? 131.415 * 100 + 0.5
 13142 
? Int(131.415 * 100 + 0.5)
 13141 

有人能解释为什么Int()函数会更改表达式的结果吗?

可能是类型转换(dissite)导致的即时窗口的魔力 ?类型名称(131.415*100+0.5)为双精度)


它与int函数的内部舍入机制有关

例如:

print Int(131.415 * 100 + format(0.5, "0.00"))
当您自己显式设置舍入时,您将得到预期的结果

我想在这篇文章中提到:

实际上,在函数中使用Int()函数也会导致问题,但首先将其转换为Double可以解决问题<代码>整数(CDbl(131.415*100+0.5))=13142谢谢!我同意“即时窗口的魔法”,因为在一个功能中,施法是无用的,它总是工作得很好。我认为在即时窗口中,它被分成
Int(131.415*100)+Int(0.5)
这就是为什么结果是
13141
print Int(131.415 * 100 + format(0.5, "0.00"))