把float定义的值赋给double,为什么后面拖出那么长的尾巴?

把float定义的值赋给double,为什么后面拖出那么长的尾巴?

public class FloatDoubleDemo {

public static void main(String[] args) {

float f = 123.123f;

double d = f;

System.out.println("f=" + f + ";" + "d=" + d);

}

}

这个运行完后,f的值是123.123。而d的值却成了123.12300109863281。为啥不一样?就因为后面加了个f?

正在回答

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

1回答

double的精度要比float高,由于浮点型数据的特殊存储结果,在浮点数之间进行类型转化时,浮点数也就是精度会存在误差,所以float转double后会产生更多的小数点。

祝学习愉快!

  • Acolasia丶y 提问者 #1
    非常感谢!
    2018-06-06 17:06:00
  • Acolasia丶y 提问者 #2
    那有没有什么解决的办法?如果以后有那种必须得float转double的咋整???
    2018-06-06 17:06:54
  • 一叶知秋519 回复 提问者 Acolasia丶y #3
    可以查看教辅区教辅,详情见这个问答链接:https://class.imooc.com/course/qadetail/54787 祝学习愉快!
    2018-06-06 17:25:18
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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