请问double tmp=0.95*101输出的tmp为什么不是95.95

来源:2-4 算术运算符

Golpher

2019-02-26 02:05:48

double tmp=0.95*101;

System.out.print(tmp);

这样输出的结果是95.949999999999999,请问是为什么呢?

写回答

2回答

chrismorgen

2019-02-26

你好同学,因为二进制有时候不能精确的表示十进制的浮点数,所以会出现很小的偏差,不过你可以通过下图的方法,达到你想要输出的结果,祝学习愉快~

http://img.mukewang.com/climg/5c74eccc00010cf407920373.jpg

1

chrismorgen

2019-02-26

这就是Java的语法规则呀,请问同学想是想保留小数点后几位数字呢?如果不想保留小数点的位数,可以使用System.out.print((int)tmp);来输出整型的变量。祝学习愉快~

0
holpher
h 问题是我这个运算是能够得到准确结果的啊,就好比1*0.1==0.1一样,是有准确结果的,所以我想问为什么没有得到准确结果,这个数值对于最后的调用是有影响的,假设我设置条件大于等于95.95,那这个结果肯定就是false的,所以对结果产生了影响,我想问一下为什么
h019-02-26
共1条回复

0 学习 · 14452 问题

查看课程