在 Kotlin 中找出
min
和 max
整数的确切 Int
和 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
类型的正负值那么“不平衡”?
P。 S.
在 C# 语言中,Double 的
min
和 max
absolute 值相同(或“平衡”)。
public const double MaxValue = 1.7976931348623157E+308;
public const double MinValue = -1.7976931348623157E+308;
整数和浮点数的
MIN_VALUE
的概念定义是不同的。
Int.MIN_VALUE
是最大的负值。Float.MIN_VALUE
是最小的正值。换句话说,
1.4E-45
是0.00[40 zeroes]0014
,并且不是一个非常大的负数。最大可能的负值由 -1 * Float.MAX_VALUE
表示。
只是为了补充这个讨论,因为我错误地期望
Float.MIN_VALUE
和 Double.MIN_VALUE
与 Int.MIN_VALUE
相关,因为它们都应该代表该数据类型的最负值。
对于
Float
或 Double
,除了 MIN_VALUE
或 MAX_VALUE
之外,还有 NEGATIVE_INFINITY
和 POSITIVE_INFINITY
的附加属性,从技术上讲,它们可能是最大的负值和正值。我试图找到一个代表尚未使用的 var 值的数字。 MIN_VALUE
对我不起作用,因为我正在处理正数和负数。