java float超过7位_java Float超8位后显示不正确

项目使用SSH框架,前端输入如:“123456789”这个9位数

fffc30cd62a163c51cc173c8ff717a8e.png

f36d18096920e4c21603a038fd1124f9.png

fd29947c4b5c2570c048b095671d258c.png

通过Debug,发现提交到对象注入的是 一个科学记数法的:“1.23456792E8”float 数

解决办法:

直接改为Double类型,

显示的时候,使用

DecimalFormat df = new DecimalFormat();

df.setMaximumFractionDigits(18); // 设置最大小数位

df.format(fl.doubleValue());

就可以得到用10进制显示的数据。

不过发现一个Tomcat7.0.55的bug

在使用El表达式的时候,如果一个方法被重载了,

其参数数量都相同,但如果传入的为null,则不知道识别什么了,会报错。

tomcat bug 提交

解决办法,

public static Object toString(Object ob) {

DecimalFormat df = new DecimalFormat();

df.setMaximumFractionDigits(18); // 设置最大小数位

if (ob == null) {

return ob;

} else {

if (ob.getClass().getName().contains("ouble")) {

Double db = (Double) ob;

if (db == 0) {

return 0;

} else {

return df.format(db.doubleValue());

}

} else if (ob.getClass().getName().contains("loat")) {

Float fl = (Float) ob;

if (fl == 0) {

return 0;

} else {

return df.format(fl.doubleValue());

}

}

return ob;

}

}

错误重现:

js页面:

${floatUtil.toString(data_djw.DJW_TLFQYL)}

在data_djw.DJW_TLFQYL 为空的时候,报错。

public void toString(Float fl){

//方法一

}

public void toString(Double db){

//方法二

}

在这样的情况下,使用el表达式是会出错的,识别不了到底用哪个方法,tomcat8已经修复该bug。

错误提示为:

Unable to find unambiguous method in class

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值