Math.ceil 和 Math.floor 返回相同的值

新手上路,请多包涵

我有一个双 (23.46)

使用方法 Math.ceil 和 Math.floor 并将我的双精度解析为这些方法,我得到返回给我的相同值,即 23 …

我希望它四舍五入为 24.. 换句话说,如果我有一个双倍的 15.01,它仍应四舍五入为 16…我该怎么做?

原文由 user818700 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 409
2 个回答

无法重现:

 public class Test
{
    public static void main(String[] args)
    {
        System.out.println(Math.ceil(23.46)); // Prints 24
        System.out.println(Math.floor(23.46)); // Prints 23
    }
}

我怀疑 要么 你没有得到你认为你拥有的输入数据, 要么 你没有写出你认为你有的输出数据。 Math.floor / ceil 自己工作正常。只有当输入已经是一个整数时,它们才会返回相同的值。你谈论 解析 你的双重……我的猜测是错误就在那里。请向我们展示一个简短但完整的程序来演示问题。

(围绕非常大的值可能还有其他情况,其中确切的目标整数不能完全表示为 double - 我没有检查过 - 但这里肯定不是这种情况。)

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 3.0 许可协议

float x = ((float)2346/100);  // You should type cast. Otherwise results 23
Math.ceil(x);                 // So Math.ceil(23) is 23 !!!
                              // Here I type cast to float.
                              // So I get the result 24

原文由 Chris J 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏