首页 > 基础资料 博客日记
JAVA之浮点数的比较
2024-01-30 15:10:31基础资料围观168次
本篇文章分享JAVA之浮点数的比较,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
一、浮点数比较概述
由于计算机内部浮点数精度的原因,使得本来应该相等的两个浮点数可能存在微小的误差,所以对于浮点数之间浮点数之间的等值判断,我们不能用==来进行比较。通常情况下,对于浮点数比较,我们通常指定一个误差范围,两个浮点数的差值在此范围之内,则认为是相等的。
二、JS浮点数的比较
var diff = 1e-5; // 定义精度精确到0.00001
var a = 0.1;
var b = 0.2;
var sum = 0.3;
// 判断相差小于精度就认为相等
if(Math.abs(a + b - sum) <= diff) {
console.log('a + b == sum');
}
//或者使用JavaScript提供的最小精度值
if(Math.abs(a + b - sum)<= Number.EPSILON){
console.log('a + b == sum');
}
三、JAVA浮点数的比较
3.1比较绝对值误差
final float THRESHOLD = 0.000001; // 设置最大误差不超过0.000001
float f1 = 0.0f;
//对f1执行11次加0.1操作
for (int i = 0; i < 11; i++) {
f1 += 0.1f;
}
float f2 = 0.1f * 11;
if (Math.abs(f1 - f2) < THRESHOLD) {
System.out.println("f1 equals f2");
}
3.2BigDecimal
通过使用java.math包中提供的API类BigDecimal,使用它的compareTo()方法比较即可。
import java.math.BigDecimal;
public class Test
{
public static void main(String[] args)
{
BigDecimal f1 = new BigDecimal("0.0");
BigDecimal pointOne = new BigDecimal("0.1");
for (int i = 0; i < 11; i++) {
f1 = f1.add(pointOne);
}
BigDecimal f2 = new BigDecimal("0.1");
BigDecimal eleven = new BigDecimal("11");
f2 = f2.multiply(eleven);
System.out.println("f1 = " + f1);
System.out.println("f2 = " + f2);
if (f1.compareTo(f2) == 0) {
System.out.println("f1 and f2 are equal using BigDecimal");
} else {
System.out.println("f1 and f2 are not equal using BigDecimal");
}
}
}
参考链接:https://www.cnblogs.com/zhloong/p/java-float-number-compare.html
文章来源:https://www.cnblogs.com/Aying216/p/17996959
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- html2canvas + jspdf 纯前端HTML导出PDF的实现与问题
- SpringBoot+Docker +Nginx 部署前后端项目
- 前几天顺手改的一个安卓启动器,已经获得40多颗星了
- 建行支付对接(H5)
- Java毕业设计:Java杭州城市文化展示系统毕业设计源代码作品和开题报告
- Java中的位图和布隆过滤器(如果想知道Java中有关位图和布隆过滤器的知识点,那么只看这一篇就足够了!)
- 少小白学前端——leaflet篇(Javascript 地图库)
- IDEA更改远程git仓库地址
- 基于yolov8的海上红外目标系统python源码+onnx模型+评估指标曲线+精美GUI界面
- TryFastGPT大模型介绍