当我运行此代码时,我感到很惊讶:
int x = (int)4.9f;
System.out.println(x);
为什么结果是4而不是5?
答案 0 :(得分:4)
这是因为你没有舍入,而是将一个浮点数转换为整数。转换只是删除小数部分。如果你想要圆,你必须使用
double x = 4.9f;
System.out.println(Math.round(x));
此外,如果您想使用明确的大写或小写舍入,则应使用Math.ceil(x)
或Math.floor(x)
代替。
答案 1 :(得分:3)
使用强制转换只会截断值而不是执行适当的舍入。您可以使用Math.round获取正确的舍入值,或使用BigDecimal选择8种不同的舍入模式。
答案 2 :(得分:0)
使用(int)4.9f
时,它只会截断小数值(不进行舍入!)。对于舍入,您需要使用Math.round()
函数。
答案 3 :(得分:0)
你正在使用一个int和int不能保存十进制数,因为你将一个浮点数转换为int,所以它删除了十进制后的数字..
int x = (int)4.9f;
System.out.println(x);
所以使用
double x = 4.9f