没有数学#round如何圆?

时间:2015-03-25 18:51:54

标签: java math

因此,只需执行以下操作即可轻松绕过十分之一:

int y;
double x = 2.5;

y = (int) (x+.5);

但是如何在不使用Math.round()的情况下四舍五入到百分之一甚至数千个?

2 个答案:

答案 0 :(得分:2)

您可以将原始数字乘以10的幂,以便所需的圆形位置在单位的位置,应用"添加一半和圆形"你已经拥有的方法,然后除以10的相同幂,所以得到的数字现在又恢复到原始比例。

百分之一:

  1. y声明为double。这样就可以将2.125四舍五入到百分之一秒。地点将生成2.13,而不是2
  2. x值乘以100.0
  3. 添加0.5
  4. 转为int。 (或long以获得更高的精确度。)
  5. 除以100.0
  6. 例:将2.125舍入到百分之一'地点。 1. 2.125 * 100.0是212.5。 2. 212.5 + 0.5是213.0。 3. 213.0施放到int的是213。 4. 213除以100.02.13

    千分之一,程序是相同的,只有100.01000.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
}

}