java 中格式化小数位数
http://terran-li2008.iteye.com/blog/205135
double d = 221.62999999999997 ;
??NumberFormat format = NumberFormat.getInstance();
??System.out.println(format.format(d));
?
?
?輸出結果:221.63
?上述格式化方法帶格式化符號1,234.87.00
?
?
?
??double d = 221.62999999999997 ;
?
??BigDecimal bigDecimal = new BigDecimal(d);
??System.out.println(bigDecimal.setScale(3, BigDecimal.ROUND_HALF_UP));
?
輸出結果:221.630
?
?
=====================
example:
public class DecimalUtil {
?private static final Log log = LogFactory.getLog(DecimalUtil.class);
?private static final String SIXTH_DECIMAL_FORMAT = "###.######";
?public static final DecimalFormat SIXTH_DECIMAL_FORMATTER = new DecimalFormat(
???SIXTH_DECIMAL_FORMAT);
?public static String toStringDecimal(Double number) {
??if (number == null)
???return null;
??else
???return SIXTH_DECIMAL_FORMATTER.format(number);
?}
?public static Double round(Double num, int scale) {
??if (num == null)
???return null;
??BigDecimal val = new BigDecimal(num);
??val = val.setScale(scale, BigDecimal.ROUND_DOWN);
??return val.doubleValue();
?}
?public static Double toSixthDecimal(Double num) {
??if (num == null)
???return null;
??else
???return round(num, 6);
?}
?public static Double toSecondDecimal(Double num) {
??if (num == null)
???return null;
??else
???return round(num, 2);
?}
}
?
?
==============
注意,如果精度為6位時,使用ROUND_HALF_UP是不穩定的
BigDecimal val = new BigDecimal(98.4857555);
??val = val.setScale(6, BigDecimal.ROUND_HALF_UP);
結果是98.485755,并未進位。
?
可以使用以下代替:
DecimalFormat SIXTH_DECIMAL_FORMATTER = new DecimalFormat("###.######");
SIXTH_DECIMAL_FORMATTER.format(98.4857555);
總結
以上是生活随笔為你收集整理的java 中格式化小数位数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate中的merge使用详情
- 下一篇: Visio 方向工程连接 Oracle