Java double数据类型中的0.0和-0.0问题
来源:互联网 发布:香水小样 知乎 编辑:程序博客网 时间:2024/05/18 20:51
在写LeetCode的时候,一个题目需要计算两两点之间的斜率,使用double类型数据保存的时候,已经有预感到了精度的问题了,自己认为理论上在一次计算中,对于同一个double值如0.5,在同一个计算机类数据表示形式是一样的,可以忽略不计,但是实际中遇见的是double数据类型0.0和-0.0的比较问题。
System.out.println(0.0 == -0.0);System.out.println(Double.compare(0.0, -0.0));System.out.println(new Double(0.0).equals(new Double(-0.0)));Map<Double, Integer> map = new HashMap<>();map.put(0.0, 1);map.put(-0.0, 2);System.out.println(map.size());System.out.println((double)(2-2)/(1-2));System.out.println((double)(3-3)/(2-1));
输出结果如下所示:
true1false2-0.00.0
在集合中遇见0.0和-0.0时,由于自动装箱,导致两个在绝对数值上相等的数据,放入集合时表现出不相等。
解决办法:
对获得的double类型数据加上一个0.0
Map<Double, Integer> map = new HashMap<>();map.put(0.0, 1);map.put(-0.0+0.0, 2);System.out.println(map.size());
1
具体参考:
http://www.programgo.com/article/4441958781/
阅读全文
0 0
- Java double数据类型中的0.0和-0.0问题
- Java double/float数据类型中的0.0和-0.0问题
- JAVA基本数据类型范围和float、double精度问题
- java中的float和double
- Java中的Float和double
- Java中的float和double
- java 中的数据类型问题
- java double数据类型格式化
- Java double数据类型
- Java中的Double-checked Locking (DCL)问题
- Java中double数据类型计算会损失精度问题
- Java中的数据类型和SQL中的数据类型
- java byte[] 和 double以及所有数据类型的相互转换
- Java多线程中的long和double
- java中的double和float数据精度
- java中的byte[]和其他数据类型转换问题
- java float和double精度问题
- float和double 的精度缺失问题以及在Java中的解决办法
- Eclipse Java注释模板设置详解
- swift中常用宏定义
- selenium+testng+gitblit+jenkins+ant自动化测试系列十一:使用Email Extersion Plugin替换Jenkins的默认邮件通知
- JMS基本概念
- java获取安装软件列表(64位和32位)
- Java double数据类型中的0.0和-0.0问题
- 操作系统线程互斥,锁死机制的简单介绍
- Spark Standalong模式运行原理剖析之天龙八步
- C++ primer plus 阅读记录-输入输出
- Unity Shader入门精要 学习笔记一
- Android触屏事件(一、事件分发)
- linux 中的outb outw inb inw
- 怎么将File转换为MultipartFile类型
- LP-PSOLA算法之(二) 语音变调