Kotlin中Float和Double类型的最小值和最大值是多少?

9

在 Kotlin 中查找 IntLong 整数的确切 minmax 值非常简单:

有符号的 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类型的正负值如此“不平衡”?


在C#语言中,Double类型的minmax绝对值是相同的(或者说是"平衡的")。
public const double MaxValue = 1.7976931348623157E+308;

public const double MinValue = -1.7976931348623157E+308;
2个回答

14

MIN_VALUE的概念定义在整数和浮点数中是不同的。

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

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


最大的正浮点值和最大的负浮点值是相同的(除了符号位)。Float.MIN_VALUEFloat.MAX_VALUE 之所以如此不同,是因为它们分别是最接近 0 和最远离 0 的数字。 - Ben P.

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接