代码之家  ›  专栏  ›  技术社区  ›  Brian Hooper

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

vb6
  •  2
  • Brian Hooper  · 技术社区  · 14 年前

    3 回复  |  直到 14 年前
        1
  •  3
  •   Lance Roberts    14 年前

    对于正数

    truncated = Int(value)
    

    如果用于负数,它将下降,即-7.2将变成-8。

        2
  •  9
  •   Community CDub    8 年前

    使用 Fix Int 这取决于你对负数的期望。

    Q196652 讨论令人难以置信的细节舍入。以下是摘录

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

    这个 Int() 函数向下舍入为 最大整数小于 Int() 修复() 正数也一样- 负数结果: Int(-3.5) 给予 -4

    完全披露:我指 this nice answer 通过 elo80ka

        3
  •  3
  •   Beth    14 年前

    this

    CInt()函数的未记录行为

    当小数部分等于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总是返回与传入的值类型相同的值。