『Java 语法基础』3 * 0.1 == 0.3 将会返回什么?true 还是 false?

false,因为有些浮点数不能完全精确的表示出来。

由于浮点数在计算机中的表示通常是近似值,3 * 0.1 实际上可能不会精确等于 0.3。这是因为二进制浮点数最为常用的表示格式(IEEE 754)通常无法精确表示一些十进制数。执行 3 * 0.1 == 0.3 在 Java 中很可能会返回 false,因为两边计算得到的二进制表示有细微的差异。为了准确的比较浮点数,通常应该使用一个非常小的误差值来确定两个浮点数是否 “相等”。例如:

double a = 3 * 0.1;
double b = 0.3;
double epsilon = 0.0001; // 定义一个很小的误差范围
boolean areEqual = Math.abs(a - b) < epsilon; // 比较是否在误差范围内相等

输出结果:

true

在操作金融计算等对精度要求非常高的场合,应避免使用 floatdouble 类型,而是使用 BigDecimal 类。

完整代码可在此查阅:GitHub

posted @   BNTang  阅读(228)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示