『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
在操作金融计算等对精度要求非常高的场合,应避免使用 float
和 double
类型,而是使用 BigDecimal
类。
完整代码可在此查阅:GitHub
标签:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具