视频中说double d=5632.464f可以这么定义,但实际输出的数并不是5623.464?

视频中说double d=5632.464f可以这么定义,但实际输出的数并不是5623.464?

正在回答 回答被采纳积分+1

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

3回答
赵小里3409227 2017-11-28 08:02:17

视频里的图是这样的,说float转double不会损失精度;而实际情况就像楼主说的这样的,所以我猜这个图说的不会损失精度是指:

float和double实际都是同一个二进制数吧,float损失一些精度表示的是5632.464,转成double类型后,能表示的精度更高一些,显示的就是5632.4638671875这样我们看到的吧,所以不损失精度不代表我们输出的结果是一样的;(这是我个人的猜测)

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

慕斯卡4085738 2017-11-25 16:22:25

应为5632.464已经超出了

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

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

自动补齐的不是简单的补零,而是按照IEEE浮点标准就行补充。

慕斯卡4085738 2017-11-25 14:37:06

float型转成double型,如果超出表示范围会丢失一部分数据的

  • 提问者 慕设计9069760 #1
    但是double型表示的范围更大为何还会丢失呢
    2017-11-25 16:05:41
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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