Java中NumberFormat格式化float类型bug的示例分析
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,小编给大家分享一下Java中NumberFormat格式化float类型bug的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去
千家信息网最后更新 2025年11月13日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安全错误
数据库的锁怎样保障安全
万方数据库属于什么索引
用友数据库不匹配
丽水app软件开发费用
网络安全论文 免费
桂林市互畅网络技术有限责任公司
欧盟对5g网络安全的看法
杭州胖鱼网络技术有限公司
软件开发如何才能进到大公司
数据库未开启自身审计
安徽大数据网络技术服务信息推荐
维普数据库的检索字段
ATP网络安全概念
东海有名的网络技术排名靠前
wincc 入数据库步骤
通过表名查数据库名
数据库装在d盘做镜像可以吗
软件开发周报和月报
ios付费软件开发
保定千云网络技术公司
ETL怎么链接数据库
神将三国多长时间出一个服务器
重庆人工智能软件开发公司
电脑版我的世界服务器地址
idj软件开发
较强网络安全主题班会
破晓团队网络安全
所有手机参数数据库
全境封锁服务器
计算机网络技术学业水平测试
数据库码判断