Java中NumberFormat格式化float类型bug的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Java中NumberFormat格式化float类型bug的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去
千家信息网最后更新 2026年11月03日Java中NumberFormat格式化float类型bug的示例分析
小编给大家分享一下Java中NumberFormat格式化float类型bug的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
首先,这个NumberFormat这个类,可以格式化各种数字。你只要稍微设置一下,结果还是很理性的。
但是,他有那么一丢丢的bug,不知道你知道不?
/** * 2.3F经过格式化,竟然变成2.99啦。what the fuck . * float类型的时候,值是2.3,但是一经变成Double,值就变成2.99999啦。 * 这个format的参数是double类型的。所以,在传入参数的时候,就变成了对2.299999952316284进行操作。返回就过就是2.99 */ private static void floatFormatTest() { float responseTime = 2.3F; NumberFormat formatter; formatter = NumberFormat.getNumberInstance(); formatter.setGroupingUsed(false); formatter.setRoundingMode(RoundingMode.FLOOR); formatter.setMaximumFractionDigits(2); String format = formatter.format(responseTime); System.out.println(format); float v = Float.parseFloat(formatter.format(responseTime)); System.out.println(v); }看下debug的时候,这个数字到底有啥出乎意料的变化。
这个时候,还是OK的。还是正常的。
看到啦没,这个2.3F,float类型的数,经过format的时候,自动变成double类型啦。然后,就不稳定啦。
经过取舍之后,2.3,就变成啦2.29啦
怎么规避这个问题
在使用这个BigDecimal的时候,传参数,要传字符串。不然还是不准确。
以上是"Java中NumberFormat格式化float类型bug的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
类型
时候
格式
还是
参数
篇文章
示例
分析
内容
数字
出乎意料
不怎么
大部分
字符
字符串
就是
更多
理性
知识
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
互联网黑科技
百单网互联网科技有限公司
苏州找大状互联网科技有限公司
深圳恒合互联网络科技有限公司
科技平台互联网
金诺互联网科技
金融科技创新监管互联网金融
互联网医疗科技
深圳互联网络科技有限公司
有马互联网科技
奇酷互联网络科技
郑州华宇互联网科技
四川狮子座互联网科技
滨湖区互联网智能科技产品供应
苏州五指互联网络科技有限
互联网科技公司有风险吗
互联网科技产业特征
艺电能源互联网科技有限公司招聘
山东蛋芒互联网科技有限公司
百单网互联网科技有限公司怎么样
互联网和科技创新
互联网科技排名
互联网科技小额贷款
顺网科技2021年互联网排名
佩信高科技互联网
青岛科技大学互联网大赛研究生
银川新华互联网科技学校联系电话
同城互联网络科技
互联网科技博主张洲