关于DOUBLE类型不显示科学计数法!!

时间:2022-09-02 22:41:46
假如有一个entity对象,其中很多属性的类型都是DOUBLE,一但位数很多时,页面显示就会以科学计数法显示。
现在我不想用科学计数法显示,也不想必变他的类型,应该怎么办呢?
看了网上很多办法都是将其转成STRING类型  就是用DecimalFormat。这样转的话结果是STRING 类型,就存不到我的entity对像里了,因为entity里面存的是DOUBLE类型的。

另外我用的STRUTS2框架
页面是这个写的
<s:textfield name="entity.income" cssClass="text" size="20" >


不知道页面能不能直接转呢?

5 个解决方案

#1


貌似不行 当时也是转成String的

#2


Double类型的精度很不准确的....
要框架自动设置进去很简单,你的entity的该属性的get set方法
为你的entity添加一个set方法
public void setXXX(String number){
   //做转换处理
   this.XXX = ...;  
}

#3


不要用浮点数了,浮点数超长后都要转成科学计数法的。
数字超大的话,用BigDecimal好了。

private BigDecimal income;

public String execute(){
  income = new BigDecimal("12345678901234567.1234567");
...
}

这样做就不会有问题。

#4


最终都是会转成String类型来显示的,所以还要自己转换下才行~

#5


double超过小数后一定位数会自动转换成科学计数法,另外如果用double进行计算也不是很准确。
对于超长小数还是用BigDecimal比较好。

可以看以下代码
        double d = 112.3 / 100000000;
        System.out.println(d);
        BigDecimal bd = new BigDecimal(d);  
        System.out.println(bd.doubleValue());
        System.out.println(bd.toPlainString());

#1


貌似不行 当时也是转成String的

#2


Double类型的精度很不准确的....
要框架自动设置进去很简单,你的entity的该属性的get set方法
为你的entity添加一个set方法
public void setXXX(String number){
   //做转换处理
   this.XXX = ...;  
}

#3


不要用浮点数了,浮点数超长后都要转成科学计数法的。
数字超大的话,用BigDecimal好了。

private BigDecimal income;

public String execute(){
  income = new BigDecimal("12345678901234567.1234567");
...
}

这样做就不会有问题。

#4


最终都是会转成String类型来显示的,所以还要自己转换下才行~

#5


double超过小数后一定位数会自动转换成科学计数法,另外如果用double进行计算也不是很准确。
对于超长小数还是用BigDecimal比较好。

可以看以下代码
        double d = 112.3 / 100000000;
        System.out.println(d);
        BigDecimal bd = new BigDecimal(d);  
        System.out.println(bd.doubleValue());
        System.out.println(bd.toPlainString());