如何在VB6中将浮点类型转换为整数类型而不进行舍入

如何在VB6中将浮点类型转换为整数类型而不进行舍入,vb6,Vb6,建议使用什么方法将浮点类型转换为整数类型,截断小数点后的所有内容?显然,CLng循环,=运算符的文档中没有提到这个主题。对于正数,您可以使用 truncated = Int(value) 如果在负数上使用,它将下降,即-7.2将变为-8。请参阅 CInt()函数的未记录行为 函数的作用是:四舍五入到最接近的整数值。换句话说,CInt(2.4)返回2,CInt(2.6)返回3 当分数部分等于0.5时,此函数表现出记录不足的行为。在本例中,如果参数的整数部分为偶数,则此函数向下舍入;如果整数部分

建议使用什么方法将浮点类型转换为整数类型,截断小数点后的所有内容?显然,CLng循环,=运算符的文档中没有提到这个主题。

对于正数,您可以使用

truncated = Int(value)
如果在负数上使用,它将下降,即-7.2将变为-8。

请参阅

CInt()函数的未记录行为 函数的作用是:四舍五入到最接近的整数值。换句话说,CInt(2.4)返回2,CInt(2.6)返回3

当分数部分等于0.5时,此函数表现出记录不足的行为。在本例中,如果参数的整数部分为偶数,则此函数向下舍入;如果整数部分为奇数,则向上舍入。例如,CInt(2.5)返回2,但CInt(3.5)返回4


这种行为不应被视为bug,因为它有助于在进行统计计算时避免引入错误。更新:Matthew Wills告诉我们,VB6的帮助文件中确实记录了这种行为:当小数部分正好为0.5时,CInt和CLng总是将其四舍五入到最接近的偶数。例如,0.5轮到0,1.5轮到2。CInt和CLng不同于Fix和Int函数,它们截断,而不是舍入数字的小数部分。此外,Fix和Int始终返回与传入的值类型相同的值

根据负数的处理方法,使用
Fix
Int

微软的一篇文章非常详细地讨论了舍入。这里有一段摘录

VB
Fix()
函数就是一个例子 截断法。例如,
Fix(3.5)
3
,而
Fix(-3.5)
-3

Int()
小于
价值
Int()
Fix()
act 正数也是这样- 截断-但给出不同的 负数的结果:
Int(-3.5)
给出
-4


完整披露:我参考了

See了解更多信息。@Lance Roberts,这也适用于VB6,还是仅适用于VBA?我还没有完全测试VB6中的所有选项,尽管这是个好主意。银行家四舍五入的概念是一样的。“Fix和Int总是返回一个与传入的值类型相同的值。”--并非如此,例如
TypeName(Int(CStr(1))
返回“Double”,
TypeName(Int(CBool(1)))
返回“Integer”。请看修复中有一个bug。@Lance Roberts:谢谢你的提醒。碰巧我选择了Int。呸!你应该看看我给你的答案的链接。Fix有一个bug。