java中float的最小值是正的为什么?

aja*_*fbd 18 java

当我们在java中的任何一个原始类型上使用MIN_VALUE函数时,它为我们提供了该类型的最小值.但是在float和double的情况下,它返回最小正值,虽然float和double也可以有负值.

Xia*_* Yu 30

MIN_VALUE告诉您浮点数的精确度,但不能表示它可以表示的数学最小值.他们应该把它命名为更好......

MAX_VALUE的负数是浮点数的最小值(相同的是double).

您可以假设这与数字在二进制中的表示方式有关:

Java float和double使用符号位表示负值/正值,而不是两个整数的补码表示.这意味着它的正负值具有相同的幅度,即. - (最大正值)=负最大值 因此,您不需要为浮点数定义实际的数学最小常量,因为您可以使用正的最大常量来确定负限值.对于整数,由于它们以二进制表示的方式,即-max!= min,因此需要2个不同的常量来定义max/min.

欲了解更多信息,请访问http://people.uncw.edu/tompkinsj/133/numbers/Reals.htm

  • 这并不能解释不一致的命名,这才是问题的真正要点。 (3认同)

Wil*_*sem 14

MIN_VALUE应该命名EPSILON它是浮点数可以表示的最小正值.

因为float使用符号幅度编码,所以float可以表示的最低值-MAX_VALUE.


Ste*_*n C 3

java中float的最小值为什么是正数?

为什么他们选择这样命名常量(我们)无法回答,因为做出决定时 SO 上没有人在房间里。

此外,知道问题的答案也无济于事,因为Float.MIN_VALUE和的值Double.MIN_VALUE 不会改变,无论它们有多么“错误”。(这会破坏任何使用这些常量的现有代码,Java 设计者只有在没有其他可行的替代方案时才会这样做。不理会它显然是一个可行的替代方案。)

我想,答案(即做出决定的真正原因)可能与开发全新编程语言的人们有关。然而,无论如何,他们都必须自己做出决定。FWIW,我不会这样设计它,但这不相关。