所以我有这段代码
BigDecimal bd = new BigDecimal(i);
bd = bd.round(new MathContext(6));
double meters = bd.doubleValue();
double km = bd.doubleValue()*0.001;
double cm = bd.doubleValue()*100;
double mm = bd.doubleValue()*1000;
double miles = bd.doubleValue()*0.000621371192;
double inches = bd.doubleValue()*39.3700787;
double feet = bd.doubleValue()*3.2808399;
double yards = bd.doubleValue()*1.0936133;
double points = bd.doubleValue()*2834.64567;
所以我在这里找到一个例子告诉我这样做
BigDecimal bd = new BigDecimal(i);
bd = bd.round(new MathContext(6));
double meters = bd.doubleValue();
这就是我尝试过的,它围绕米数,但英寸,英尺,码数等数字不会四舍五入。我做错了吗?什么是正确的方法呢?
编辑 :好的,所以我找到了一些有用的东西以防其他人遇到问题 而不是使用:
double points = bd.doubleValue()*2834.64567;
我这样做了:
BigDecimal points = new BigDecimal(i*2834.64567);
points = points.round(new MathContext(6));
答案 0 :(得分:0)
你可以使用BigDecimal; 例如:
double d = 15.3343243;
BigDecimal bd = new BigDecimal(d);
bd = bd.setScale(2, BigDecimal.ROUND_CEILING);
bd = new BigDecimal(0.001 * bd.doubleValue());
d = bd.doubleValue();
System.out.println(d);
或没有BigDecimal对象:
System.out.println((double)((int) (d * 1000)) / 1000);