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

问题描述 投票:0回答:2

在 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;
kotlin floating-point double primitive-types
2个回答
14
投票

整数和浮点数的

MIN_VALUE
的概念定义是不同的。

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

换句话说,

1.4E-45
0.00[40 zeroes]0014
,并且不是一个非常大的负数。最大可能的负值由
-1 * Float.MAX_VALUE
表示。


0
投票

只是为了补充这个讨论,因为我错误地期望

Float.MIN_VALUE
Double.MIN_VALUE
Int.MIN_VALUE
相关,因为它们都应该代表该数据类型的最负值。

对于

Float
Double
,除了
MIN_VALUE
MAX_VALUE
之外,还有
NEGATIVE_INFINITY
POSITIVE_INFINITY
的附加属性,从技术上讲,它们可能是最大的负值和正值。我试图找到一个代表尚未使用的 var 值的数字。
MIN_VALUE
对我不起作用,因为我正在处理正数和负数。

© www.soinside.com 2019 - 2024. All rights reserved.