1
所以我有這樣的代碼如何在java中將數字舍入到6個有效數字?
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));
我最好使用'Double'和['NumberFormat'](http://docs.oracle.com/javase/7/ docs/api/java/text/NumberFormat.html)。當您只需要6位有效數字時,使用BigDecimal似乎毫無意義的矯枉過正。 – 2012-04-07 09:06:36
我認爲這複製/涉及http://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java – joran 2012-04-07 09:24:51
另一種可能的重複 - http:// stackoverflow.com/questions/202302/rounding-to-an-arbitrary-number-of-significant-digits – luketorjussen 2012-04-07 10:36:30