VBS中的clng/cint/round和经典ASP和VBA错误的round

VBS中的clng/cint/round和经典ASP和VBA错误的round,vba,vbscript,asp-classic,rounding,numeric,Vba,Vbscript,Asp Classic,Rounding,Numeric,如果整数部分是奇数,小数部分是5,那么即使结果是上升的,结果也会下降,为什么要使用ASP和VBS进行舍入 请自己试一试: a=1.5 wscript.echo clng(a) '---> 2 a=2.5 wscript.echo clng(a) '---> 2 a=3.5 wscript.echo clng(a) '---> 4 a=4.5 wscript.echo clng(a) '---> 4 a=5.5 wscript.ech

如果整数部分是奇数,小数部分是5,那么即使结果是上升的,结果也会下降,为什么要使用ASP和VBS进行舍入

请自己试一试:

a=1.5 
wscript.echo clng(a)   '---> 2 

a=2.5 
wscript.echo clng(a)   '---> 2 

a=3.5 
wscript.echo clng(a)   '---> 4 

a=4.5 
wscript.echo clng(a)   '---> 4

a=5.5 
wscript.echo clng(a)   '---> 6

a=6.5 
wscript.echo clng(a)   '---> 6
怎么可能呢?我还没有找到任何关于这个的文档。。。 对不起,问题是为什么默认VBS/ASP e VBA usr银行舍入


当值的小数部分正好为
0.5
时,
CLng
函数舍入到最接近的偶数。例如,
0.5
轮到
0
1.5
轮到
2
3.5
轮到
4
。四舍五入的目的 最接近的偶数用于补偿多个数字相加时可能累积的偏差

CLng
不同于
Fix
Int
函数,它们将数字的小数部分截断,而不是四舍五入


当值的小数部分正好为
0.5
时,
CLng
函数舍入到最接近的偶数。例如,
0.5
轮到
0
1.5
轮到
2
3.5
轮到
4
。四舍五入的目的 最接近的偶数用于补偿多个数字相加时可能累积的偏差

CLng
不同于
Fix
Int
函数,它们将数字的小数部分截断,而不是四舍五入


“我还没有找到任何关于这方面的文档”-我觉得这很难相信。你不希望它分别使用舍入。虽然不是VBScript(VBA,但差异很小),但这个答案很好地解释了这种行为-我认为默认情况下所有函数VBS/ASP和VBA都使用银行舍入是荒谬的。“我还没有找到任何关于这方面的文档”-我觉得这很难相信。您不希望它分别被循环使用。虽然不是VBScript(VBA,但差异很小)这个答案很好地解释了这种行为——我认为默认情况下,所有函数VBS/ASP和VBA都使用银行家取整是荒谬的。惊人!文档和您期望的准确位置!:oVBA提示供参考:惊人!文档和您期望的准确位置!:oVBA提示供参考: