[英]Math.round and Math.ceil not working
我正试图围绕用户输入,但我似乎可以得到我的双倍轮到一个int。 基本上,当我输入4.4999时,它不会达到5。
有任何想法吗?
Math.ceil Math.ceil()
返回 ceiled值。 它不能改变它作为参数所使用的变量的值,因为Java通过值传递参数。 所以你需要这样做
hours = Math.ceil(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
。
两个函数都返回舍入(或上限)值,但不更改作为参数传递的变量。
使用例如。 hours = Math.ceil(hours);
。
Math.ciel
返回一个Double
。 像这样的东西应该工作(你的hours > 0
块):
cost += Math.ceil(hours) * hourlyRate;
你没有将Math.ceil(hours)
的结果分配回hours
所以它永远不会圆。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.