Kotlin中的float和Double类型的最小值和最大值

时间:2019-05-26 18:55:48

标签: kotlin

很容易找出Kotlin中Int eger和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类型中的正值和负值如此不同?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

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