Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有针对Java浮点原语的IEEE 754标准实现?_Java_Floating Point_Double_Bigdecimal_Ieee 754 - Fatal编程技术网

是否有针对Java浮点原语的IEEE 754标准实现?

是否有针对Java浮点原语的IEEE 754标准实现?,java,floating-point,double,bigdecimal,ieee-754,Java,Floating Point,Double,Bigdecimal,Ieee 754,我感兴趣的是Java是否使用IEEE 754标准来实现其浮点算法。我在文档中看到了这种情况: IEEE 754-2008中定义的操作 据我所知,IEEE754的积极方面是提高浮点算术的精度,所以如果我在Java中使用double或float,计算的预测将与BigDecimal中的预测相同吗?如果不是,那么在课堂上使用IEEE754标准有什么意义呢 我感兴趣的是Java是否使用IEEE 754标准来实现其浮点运算 IEEE-754定义了多种浮点类型的标准。多年来,它们都是二进制浮点;这就是Java

我感兴趣的是Java是否使用IEEE 754标准来实现其浮点算法。我在文档中看到了这种情况:

IEEE 754-2008中定义的操作

据我所知,IEEE754的积极方面是提高浮点算术的精度,所以如果我在Java中使用
double
float
,计算的预测将与
BigDecimal
中的预测相同吗?如果不是,那么在课堂上使用IEEE754标准有什么意义呢

我感兴趣的是Java是否使用IEEE 754标准来实现其浮点运算

IEEE-754定义了多种浮点类型的标准。多年来,它们都是二进制浮点;这就是Java的
float
double
的含义:
float
是32位IEEE-754二进制浮点值(标准称之为)
double
是64位的(标准称之为)。这些二进制浮点数对于计算机的计算非常有效,但是因为它们是二进制的,而我们是十进制的,所以存在一些期望不匹配;例如,
0.1
不能精确地存储在
double
中,而像
0.1+0.2
这样的异常结果是
0.300000000000000004
。有关详细信息,请参阅。例如,它们不是财务计算的好选择

BigDecimal
是一个Java类,它以任意精度实现十进制小数。它比使用
double
慢得多,但结果符合我们的十进制期望(例如,
0.1+0.2
将是
0.3

2008年版IEEE-754增加了重要的新格式,尤其是。它们是十进制浮点,因此它们的工作方式与我们的工作方式相同
0.1
可以准确地存储在
小数64
0.1+0.2
0.3
中的
小数64
。然而,据我所知,它们与你的问题并不相关

由于
BigDecimal
早于IEEE-754 2008(在一定程度上),它定义了自己的语义

如果不是,在数学课上使用IEEE754标准有什么意义

JDK9向
Math
中添加了新的操作,这些操作执行IEEE-754 2008规范定义的操作(例如,它执行a),因此为了清晰起见,它参考IEEE-754 2008规范定义了这些操作

更多阅读: