向下转换为int舍入模式?

时间:2013-09-12 13:15:46

标签: java rounding downcast

以下哪种舍入模式后面是将一个double转换为int?

使用给定rounding mode

将输入舍入到一位数的结果
Input                                                   HALF_EVEN
Number  UP      DOWN    CEILING FLOOR   HALF_UP HALF_DOWN       UNNECESSARY
5.5     6       5       6       5       6       5       6       throw ArithmeticException
2.5     3       2       3       2       3       2       2       throw ArithmeticException
1.6     2       1       2       1       2       2       2       throw ArithmeticException
1.1     2       1       2       1       1       1       1       throw ArithmeticException
1.0     1       1       1       1       1       1       1       1
-1.0    -1      -1      -1      -1      -1      -1      -1      -1
-1.1    -2      -1      -1      -2      -1      -1      -1      throw ArithmeticException
-1.6    -2      -1      -1      -2      -2      -2      -2      throw ArithmeticException
-2.5    -3      -2      -2      -3      -3      -2      -2      throw ArithmeticException
-5.5    -6      -5      -5      -6      -6      -5      -6      throw ArithmeticException

我知道它与我所引用的枚举的原始元素无关,但是这个表格肯定涵盖了双向下降到int的方式。列表中哪一个做到了? 提前谢谢。

1 个答案:

答案 0 :(得分:3)

  

以下哪种舍入模式后面是将一个double转换为int?

它只是截断为零 - 在您的问题中由容易混淆的DOWN表示。

来自section 5.1.3 of the JLS

  

将浮点数转换为整数类型T需要两个步骤:

     

在第一步中,如果long很长,则浮点数会转换为T,如果intT,则转换为byte {1}},shortcharint,如下所示:

     
      
  • 如果浮点数为NaN(§4.2.3),则转换的第一步结果为int或long 0。

  •   
  • 否则,如果浮点数不是无穷大,则浮点值将四舍五入为整数值V,使用IEEE 754舍入为零的模式舍入为零(第4.2.3节) 。然后有两种情况:

  •   
     

[...]

(其余与问题无关。)