在Java中计算0.01整数的安全方法是什么?

时间:2017-10-03 03:39:47

标签: java math

例如,我有整数,即450.我想得到N的1/100。在这种情况下,它应该是4.5,它将四舍五入为5.

int i = 450;

int round = Math.round(i/450)?

当i变化时,这总是安全吗?

3 个答案:

答案 0 :(得分:3)

HTML("<h4>&nbsp; &nbsp; &nbsp; You might also like this</h4>") 将在结果传递到i/450之前执行整数除法,您将无法得到预期的结果。即便如此,你的价值还是 ~1 / 450 ,而不是0.01。你需要

Math.round

但是你可以使用像这些

中的任何一个那样的整数数学进行舍入
(int)Math.round(i/100.0);

有关详细信息,请参阅Rounding integer division (instead of truncating)

另见

这些是关于天花板功能,但你可以得到这个想法

答案 1 :(得分:1)

无论分子或分母如何,它都可以工作

BigDecimal.valueOf(450).divide(BigDecimal.valueOf(100),RoundingMode.HALF_UP);

另一种方式可能是

BigDecimal.valueOf(450,2).setScale(0, RoundingMode.HALF_UP);

您可以使用int

转换回.intValue()

当你在大部分时间处理精确的十进制数学直到最后时,这当然是有道理的,就像金融应用程序的情况一样。

答案 2 :(得分:0)

我&#34;思考&#34;这可能就是你要找的东西:

float i = 450;

int round = Math.round(i/100);

System.out.println(round);//prints 5

div with int总是向下舍入所以当i是int时,当i在400和499之间时,表达式i / 100返回4。

或者,您可以转换为浮动:

int i = 450;

int round = Math.round((float)i/100);

System.out.println(round);//prints 5