Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Math.round和Math.ceil不工作_Java - Fatal编程技术网

Java Math.round和Math.ceil不工作

Java Math.round和Math.ceil不工作,java,Java,我试图对用户输入进行四舍五入,但我似乎可以将我的double-to-round设置为int。基本上,当我输入4.4999时,它不会四舍五入到5 有什么想法吗?Math.ciel返回一个Double。类似的方法应该可以工作(在hours>0块内): 这两个函数都返回四舍五入(或ceiled)值,但不更改作为参数传递的变量 使用例如:小时=数学单元(小时)Math.ceil()返回Celed值。它不能更改作为参数的变量的值,因为Java按值传递参数。所以你需要这样做 hours = Math.cei

我试图对用户输入进行四舍五入,但我似乎可以将我的double-to-round设置为int。基本上,当我输入4.4999时,它不会四舍五入到5


有什么想法吗?

Math.ciel
返回一个
Double
。类似的方法应该可以工作(在
hours>0
块内):


这两个函数都返回四舍五入(或ceiled)值,但不更改作为参数传递的变量

使用例如:小时=数学单元(小时)
Math.ceil()
返回Celed值。它不能更改作为参数的变量的值,因为Java按值传递参数。所以你需要这样做

hours = Math.ceil(hours);

您没有将
Math.ceil(hours)
的结果分配回
hours
,因此它永远不会取整。

实际的解决方案是在
ceil
方法中使用double

Math.ceil(7*50/100)
将返回
3.0
,即使
7*50/100
产生的实际值是
3.5
。这是因为由于一切都是
int
,因此
350/100
本身的结果将是
3

但是,如果您给出
Math.ceil(7*50/100D)
,结果将是
4.0

因此,您的问题中的
4.999
应该是一个
double
,而不是像
4999/1000这样的整数运算的结果

只要确保
ceil
中给出的内容是
double
而不是
int

int a = 15

int b = 2;

int x = (int) Math.ceil( a / b );

int y = (int) Math.ceil( (double) a / (double) b );
结果

x:7

y:8

y:=f(x)。。。f不会“改变”x…
Math.round()
的工作原理类似于
Math.floor(a+0.5d)
。如果您计算:
4.4999+0.5
这不会给您带来超过
5
的结果,这就是为什么在您的实例中,您不会得到带有round的
5
。从审阅队列:我可以请求您在源代码周围添加一些上下文吗。只有代码的答案很难理解。如果你能在你的帖子中添加更多信息,这将对提问者和未来的读者都有帮助。(int)Math.ceil(3/2.0)将给出答案2(int)Math.ceil(3/2)将给出答案1为了得到浮点值,你需要对其中一个参数进行强制转换(或添加.0)
int a = 15

int b = 2;

int x = (int) Math.ceil( a / b );

int y = (int) Math.ceil( (double) a / (double) b );