【问题标题】:Java Standard On Result Of Casting A Double To An Int关于将 Double 转换为 Int 的结果的 Java 标准
【发布时间】:2015-01-27 00:26:37
【问题描述】:

假设我有以下...

double d = 1.6;
int q = ( ( int ) d );

这是否总是会根据 Java 标准删除小数点,或者它会根据标准向上或向下舍入 (或多或少存在)?

【问题讨论】:

    标签: java java-8 standards standards-compliance


    【解决方案1】:

    是的,它会去掉小数点。这意味着它将向零舍入,因此如果为正数则向下舍入,如果为负数则向上舍入。

    请参阅 JLS 中的 §5.1.3

    否则,如果浮点数不是无穷大,则浮点值将四舍五入为整数值 V,使用 IEEE 754 向零舍入模式 (§4.2.3) 向零舍入。

    【讨论】:

      【解决方案2】:

      double 转换为int 总是将值设为小于它的最大整数,但试试这个:

      int q = (int) Math.round(d); // rounded instead of floored
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-02
        • 1970-01-01
        • 2012-09-03
        • 2015-05-30
        • 2017-07-07
        • 2022-08-19
        • 2011-05-10
        相关资源
        最近更新 更多