繁体   English   中英

Math.round和Math.ceil不起作用

[英]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/1003.5 这是因为因为一切都是int350/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM