当我们在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
java中float的最小值为什么是正数?
为什么他们选择这样命名常量(我们)无法回答,因为做出决定时 SO 上没有人在房间里。
此外,知道问题的答案也无济于事,因为Float.MIN_VALUE和的值Double.MIN_VALUE 不会改变,无论它们有多么“错误”。(这会破坏任何使用这些常量的现有代码,Java 设计者只有在没有其他可行的替代方案时才会这样做。不理会它显然是一个可行的替代方案。)
我想,答案(即做出决定的真正原因)可能与开发全新编程语言的人们有关。然而,无论如何,他们都必须自己做出决定。FWIW,我不会这样设计它,但这不相关。
| 归档时间: |
|
| 查看次数: |
19000 次 |
| 最近记录: |