Java中NumberFormat格式化float类型bug的示例分析
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,小编给大家分享一下Java中NumberFormat格式化float类型bug的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
职业规划范文软件开发
南邮网络安全大赛
老邻居网络技术
嵌入式软件开发是码农
广州兼职软件开发工程师
基岩版服务器远程连接后台
什么网络技术能赚钱
鲲鹏通用软件开发工程师
jdbc协议连接数据库
永安app软件开发哪家靠谱
软件开发助理是干什么的
浙工大数据库期末卷
专业java软件开发培训
服务器dns劫持
软件数据库架构算机密吗
徐汇区新型网络技术节能规范
红桥金蝶软件开发好用吗
计算器网络技术工资
多合一数据库服务系统
多措网络安全保卫战
如何识别数据库中的备份
腾讯自建服务器视频
从事软件开发用英文怎么说
社保增员显示网络技术问题
金蝶软件开发票怎么开
怀旧服联盟服务器不显示战斗
溧水区软件开发信息推荐
四年级网络安全知识竞赛试题
徐汇区新型网络技术节能规范
会员数据库管理系统