Jav*_*107 7 java double integer nan
当我写的东西像
double a = 0.0;
double b = 0.0;
double c = a/b;
Run Code Online (Sandbox Code Playgroud)
结果是Double.NaN
,但是当我为整数尝试相同时,它产生一个ArithmeticException
.那么,为什么不存在Integer.NaN
呢?
出于同样的原因,NaN
任何其他语言都没有整数.
现代计算机对整数使用2的补码二进制表示,并且该表示没有NaN值.(表示类型域中的所有值都表示明确的整数.)
因此,计算机整数算术硬件不识别任何NaN表示.
理论上,有人可以为包含NaN(或INF,或其他一些外来价值)的整数创建替代表示.但是,硬件不支持使用这种表示的算法.虽然有可能实现它的软件,这将是非常昂贵的1 ...并不可取在其他方面也包含在Java语言中这种支持.
1 - 它当然是相对的,但我预计NaN的软件实现(至少)比硬件慢一个数量级.如果你真的,真的,需要这个,那么这是可以接受的.但绝大多数整数算术代码不需要这个.在大多数情况下,抛出"除以零"的异常就可以了,并且在所有整数算术运算中减慢一个数量级是不可接受的.
相比之下:
归档时间: |
|
查看次数: |
7652 次 |
最近记录: |