您的位置:首页 > 编程语言 > Java开发

java jsf保留两位小数问题

2010-06-25 18:00 471 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: