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

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

double tmp=0.95*101;

System.out.print(tmp);

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

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

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

http://img1.sycdn.imooc.com//climg/5c74eccc00010cf407920373.jpg

chrismorgen 2019-02-26 10:25:21

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

  • 提问者 Golpher #1
    问题是我这个运算是能够得到准确结果的啊,就好比1*0.1==0.1一样,是有准确结果的,所以我想问为什么没有得到准确结果,这个数值对于最后的调用是有影响的,假设我设置条件大于等于95.95,那这个结果肯定就是false的,所以对结果产生了影响,我想问一下为什么
    2019-02-26 10:54:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师