关于java中double的问题

耐小裳 2016-06-29 10:03:13

public class DoubleTest {
public static void main(String[] args) {
double d = 6.22;
String douString1 = "3.12";
String douString2 = "3.1";
double d1 = Double.valueOf(douString1);
double d2 = Double.valueOf(douString2);
System.out.println(d - d1 - d2);

double a = 26.22;
String b = "13.12";
String c = "13.1";
double e = Double.valueOf(b);
double f = Double.valueOf(c);
double ss = Double.valueOf(a) - e - f;
System.out.println(a - e - f);
}
}

运行结果:
-4.440892098500626E-16
0.0
这是为什么?
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
家里敷泥呀 2016-06-30
  • 打赏
  • 举报
回复
-4.440892098500626E-16 相当于是-0.00000000000000444089,非常接近0的数。 这只是double精度问题。常有的事。
pangshushuwp 2016-06-30
  • 打赏
  • 举报
回复
浮点数在计算机中只是表示成了一个近似值 float和double只能用来做科学计算或者是工程计算; 在商业计算中我们要用java.math.BigDecimal。
  • 打赏
  • 举报
回复
double计算都是用移位和加法器,不准确的。

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧