很容易找出Kotlin中Int
eger和Long
整数的确切最小值和最大值:
签名的32位整数:
Int.MIN_VALUE // -2147483648
Int.MAX_VALUE // 2147483647
签名的64位整数:
Long.MIN_VALUE // -9223372036854775808
Long.MAX_VALUE // 9223372036854775807
但是,如果我尝试为Float
和Double
值打印min
或max
类型的范围,我将得到不平衡的数字。
签名的32位浮点数:
Float.MIN_VALUE // 1.4E-45
Float.MAX_VALUE // 3.4028235E38
签名的64位浮点数:
Double.MIN_VALUE // 4.9E-324
Double.MAX_VALUE // 1.7976931348623157E308
为什么Float
和Double
类型中的正值和负值如此不同?
答案 0 :(得分:3)
对于整数与浮点数,MIN_VALUE
的概念定义是不同的。
Int.MIN_VALUE
是最大的负值。Float.MIN_VALUE
是最小的正值。换句话说,1.4E-45
是0.00[40 zeroes]0014
,不是是一个非常大的负数。可能的最大负值由-1 * Float.MAX_VALUE
表示。
答案 1 :(得分:0)
只是为了补充这个讨论,因为我错误地期望 Float.MIN_VALUE
和 Double.MIN_VALUE
与 Int.MIN_VALUE
相关,因为它们都应该代表该数据类型的最负值.
对于 Float
或 Double
,除了 MIN_VALUE
或 MAX_VALUE
之外,NEGATIVE_INFINITY
和 POSITIVE_INFINITY
从技术上讲,您还有其他属性可能是您最大的负值和正值。我试图找到一个数字来表示尚未使用的 var 的值。 MIN_VALUE
对我不起作用,因为我正在处理正数和负数。