【问题标题】:Min and Max values of Float and Double types in KotlinKotlin 中 Float 和 Double 类型的最小值和最大值
【发布时间】:2019-05-26 18:55:48
【问题描述】:

在 Kotlin 中找出 Integer 和 Long 整数的确切最小值和最大值很简单:

有符号 32 位整数:

Int.MIN_VALUE       // -2147483648
Int.MAX_VALUE       //  2147483647

有符号 64 位整数:

Long.MIN_VALUE      // -9223372036854775808
Long.MAX_VALUE      //  9223372036854775807

但如果我尝试打印FloatDouble 类型的minmax 值范围,我会得到不平衡的数字。

有符号 32 位浮点数:

Float.MIN_VALUE     //  1.4E-45
Float.MAX_VALUE     //  3.4028235E38

有符号 64 位浮点数:

Double.MIN_VALUE    //  4.9E-324
Double.MAX_VALUE    //  1.7976931348623157E308

为什么FloatDouble 类型中的正负值如此不同?

【问题讨论】:

    标签: kotlin


    【解决方案1】:

    MIN_VALUE 的概念定义对于整数和浮点数是不同的。

    • Int.MIN_VALUE 是最大的负值。
    • Float.MIN_VALUE 是最小的正值。

    换句话说,1.4E-450.00[40 zeroes]0014不是一个很大的负数。最大可能的负值由-1 * Float.MAX_VALUE 表示。

    【讨论】:

    • 最大正浮点值和最大负浮点值相同(符号位除外)。 Float.MIN_VALUEFloat.MAX_VALUE 如此不同,因为它们是最接近 0 的数字,也是最远离 0 的数字。
    【解决方案2】:

    只是为了补充这个讨论,因为我错误地认为 Float.MIN_VALUEDouble.MIN_VALUEInt.MIN_VALUE 相关,因为它们都应该代表该数据类型的最负值。

    对于FloatDouble,除了MIN_VALUEMAX_VALUE 之外,您还有NEGATIVE_INFINITYPOSITIVE_INFINITY 的其他属性,从技术上讲,这可能是您最大的负值和正值。我试图找到一个代表尚未使用的 var 值的数字。 MIN_VALUE 对我不起作用,因为我正在处理正数和负数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 2011-01-04
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      相关资源
      最近更新 更多