簡體   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