繁体   English   中英

在对浮点数进行运算时,Java中使用哪种舍入方法?

[英]Which rounding method is used in Java when operating on floating point numbers?

语言是Java,机器是带有Intel处理器的普通PC。 类型为double。

浮点数不能精确地表示每个小数,除法或减法之类的运算结果以某种方式四舍五入为近似的浮点数表示形式。

我问使用的舍入策略是否为:

  1. 四舍五入
  2. 四舍五入
  3. 向负无穷大舍入
  4. 向正无穷大舍入
  5. 四舍五入到最接近的值(一半)
  6. 四舍五入到最接近的值(一半向下)
  7. 四舍五入到最接近的值(一半)

Java虚拟机浮点算法和IEEE 754

...

  • Java虚拟机的舍入操作始终使用IEEE 754舍入到最近模式。 不精确的结果四舍五入到最接近的可表示值,并以最低有效位为零的值舍入 这是IEEE 754的默认模式。 但是,将浮点类型的值转换为整数类型的值的Java虚拟机指令四舍五入为零。 Java虚拟机不提供任何更改浮点舍入模式的方法

因此,正如Patricia Shanahan在评论中已经回答的那样,JVM的舍入模式固定为#7 舍入到列表中最接近的值(半数) 但是,这仅适用于浮点间的舍入。 浮点数到整数舍入使用#2 舍入为零

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM