现在我不想用科学计数法显示,也不想必变他的类型,应该怎么办呢?
看了网上很多办法都是将其转成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 = ...;
}
要框架自动设置进去很简单,你的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");
...
}
这样做就不会有问题。
数字超大的话,用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());
对于超长小数还是用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 = ...;
}
要框架自动设置进去很简单,你的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");
...
}
这样做就不会有问题。
数字超大的话,用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());
对于超长小数还是用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());