gpt4 book ai didi

java - 为什么在 Java 中允许双文字的任意精度?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:54 26 4
gpt4 key购买 nike

刚从Peter Lawreys post中了解到这是有效的表达式,计算结果为 true

333333333333333.33d == 333333333333333.3d

我的问题是,为什么允许使用不能用 double 表示的 double 文字,而不允许使用不能表示的整数文字。这个决定的理由是什么。


旁注,我可以实际上触发 double 文字的超出范围编译错误:-)

99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999d

所以只要我们在(最小,最大)范围内,文字就会被近似,但是当超出这个范围时,编译器似乎拒绝近似它。

最佳答案

问题在于,您可能键入的小数很少可以精确表示为 IEEE float 。因此,如果您删除了所有不精确的常量,那么双字面值的使用将变得非常笨拙。大多数时候,“假装我们可以代表它”的行为要有用得多。

关于java - 为什么在 Java 中允许双文字的任意精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com