日期:2014-05-19  浏览次数:20714 次

保留小数点的问题
public double getTest() {
double d = 10578945.314781564654767134324324;
BigDecimal bg = new BigDecimal(d);
d = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return d;
}

public static void main(String[] arges) {

TestMap testMap = new TestMap();
System.out.print(testMap.getTest());
}  

结果是1.057894531E7 我想得到1057.89,1000W以内是没问题的,超过7位数就不行了呢
怎么做?

------解决方案--------------------
首先,从数值来说是没有问题的;你是不是想问在页面中显示的时候的格式的问题,可以用fmt的标签

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<fmt:formatNumber value="${aaa}" pattern="#00.00" /> 
-- aaa表示某个数字,结果会保留两位小数

或者
<fmt:formatNumber value="${aaa}" pattern="#,#00.00" />
-- 结果会保留两位小数,并且有分隔符,比如“22,345.68” 




------解决方案--------------------
Java code


            NumberFormat format =NumberFormat.getInstance();
        //是否分组
        format.setGroupingUsed(false);
        //允许返回小数部分的最大位数
        format.setMaximumFractionDigits(2);
        System.out.println(format.format(10578945.314781564654767134324324));