java保留两位小数问题:
方式一:
四舍五入
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
保留两位小数
---------------------------------------------------------------
方式二:
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(你要格式化的数字);
例:new java.text.DecimalFormat("#.00").format(3.1415926)
#.00 表示两位小数 #.0000四位小数 以此类推...
方式三:
double d = 3.1415926;
String result = String .format("%.2f");
%.2f %. 表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型
保留两位小数且不用科学计数法
JSF绑定bean的属性为Double时,如果输入的数字过长会自动转为科学计数法,这对界面显示是个障碍,通过一下方法可以进行转换
1、写一个转换器,在getAsString方法中对科学计数法的Double进行转换并返回
public String getAsString(FacesContext context, UIComponent component,
Object value)
{
Double dValue = (Double)value;
if (null == dValue )
{
return "没有取得value!";
}
DecimalFormat df = new DecimalFormat("#0.00"); //保留两位小数且不用科学计数法
return df.format(dValue);
}
2、在faces-config.xml中配置此转换器
<converter>
<description>NUMBER convert</description>
<converter-id>numberConvert</converter-id>
<converter-class>com.abc.jsf.convert.NumberConvert</converter-class>
</converter>
3、在页面上使用转换器
<h:inputText id="je" value="#{xxBean.je}" required="true">
<f:validateDoubleRange minimum="0.01" maximum="9999999999999.99"/>
<f:converter converterId="numberConvert"/>
</h:inputText>
这样处理后,页面在渲染阶段会将科学计数法的Double的je转换为String