gpt4 book ai didi

Java Ceil 怪异

转载 作者:行者123 更新时间:2023-12-01 07:24:30 27 4
gpt4 key购买 nike

为什么输出0而不是1?

System.out.println((int) (Math.ceil(1/2)));

虽然这个正确输出 1

System.out.println((int) (Math.ceil((double) 1/ (double) 2)));

Math.ceil(double) 不应该自动将 1/2 类型转换为 double 吗?

最佳答案

Math.ceil 确实将整数转换为 double 。但它只有在执行完整数运算之后才会这样做。这是操作顺序:

int a = 1;
int b = 2;
int c = a / b; // now equals 0, because it's an integer operation.
double d = (double)c; // now it's a double - but equals 0.0.
double e = Math.ceil(d); // still 0.0.

您认为 1/2 是一个分数,但事实并非如此 - 它是两个 int 的表达式和一个必须在其计算之前解析的运算符值可以在进一步的表达式中使用。

关于Java Ceil 怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27692172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com