因此,只需执行以下操作即可轻松绕过十分之一:
int y;
double x = 2.5;
y = (int) (x+.5);
但是如何在不使用Math.round()
的情况下四舍五入到百分之一甚至数千个?
答案 0 :(得分:2)
您可以将原始数字乘以10的幂,以便所需的圆形位置在单位的位置,应用"添加一半和圆形"你已经拥有的方法,然后除以10的相同幂,所以得到的数字现在又恢复到原始比例。
百分之一:
y
声明为double
。这样就可以将2.125
四舍五入到百分之一秒。地点将生成2.13
,而不是2
。x
值乘以100.0
。0.5
。int
。 (或long
以获得更高的精确度。)100.0
。例:将2.125
舍入到百分之一'地点。
1. 2.125 * 100.0是212.5
。
2. 212.5 + 0.5是213.0
。
3. 213.0
施放到int
的是213
。
4. 213
除以100.0
为2.13
。
千分之一,程序是相同的,只有100.0
被1000.0
取代。
由于double
浮点类型的精度有限,上述方法会出现浮点错误。
您还可以将您的值转换为BigDecimal
。然后你可以使用BigDecimal
's round
method。需要MathContext
才能直接舍入到所需的精度。
答案 1 :(得分:1)
公共类小数{
public static void main(String[] args) {
double xd = 2.125;
double mult = xd * 100.0;
double add = mult + 0.5;
int reuslts = (int) add;
double result = reuslts / 100.0;
System.out.println(result);// 2.13
}
}