在Java中从double转换为float
如果我正在使用double
,并将其转换为float
,则该如何正确工作?值会被截断以适合浮点数吗?还是舍入值不同?抱歉,这听起来有点补救,但是我正在尝试掌握float
和double
转换的概念。
回答:
根据 Java语言规范的
第5.1.3节:
从double到float的原始转换变窄由IEEE
754舍入规则(第4.2.4节)控制。这种转换可能会失去精度,但也会失去范围,导致非零双精度浮点为零,而有限双精度浮点为无穷大。双精度NaN转换为浮点型NaN,双精度无穷大转换为相同符号的浮点无穷大。
和第4.2.4节说:
Java编程语言要求浮点算术的行为就像每个浮点运算符将其浮点结果四舍五入到结果精度一样。不精确的结果必须四舍五入到最接近无限精确结果的可表示值;如果两个最接近的可表示值相等地接近,则选择其最低有效位为零的那个。这是IEEE
754标准的默认舍入模式,称为“最接近舍入”。
以上是 在Java中从double转换为float 的全部内容, 来源链接: utcz.com/qa/436266.html