int转double

int转double

# 具体遇到的问题
请问老师,为什么int类型转double类型的,精度就不会丢失呢?
# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

正在回答

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

2回答

同学你好,1.  精度丢失:计算机进行的是二进制运算,我们输入的十进制数字会先转换成二进制,进行运算后再转换为十进制输出。float和double提供了快速的运算,然而问题在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值,这就导致了在后来的运算会出现不正确结果的情况。

2. 所以当通过科学计数法的数据进行运算时或转换为科学计数法时,数据可能会存在偏差,从而就会出现精度丢失的问题。如下所示:

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

注:整型分别有四种类型,如:int、long类型,则当使用long类型时(数据过大)时,就会产生精度丢失的问题。祝学习愉快!

好帮手慕小尤 2020-12-14 10:40:27

同学你好,正整数转换为浮点型,数值小时并不会产生精度丢失。如:10转换为浮点数为10.0,。如下图所示:

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

但当数值较大时,会以科学计数法的方式进行展示,就可能会产生精度丢失的问题。

  • 提问者 慕尼黑3413982 #1

    老师,int类型的不是在正负2的32次方-1内么,比如我double d=4294967295,这样子转换过来的时候后面几位不会丢失么?http://img1.sycdn.imooc.com//climg/5fd6e39f096f065a07850441.jpg

    2020-12-14 12:01:55
  • 好帮手慕小尤 回复 提问者 慕尼黑3413982 #2

    同学你好,1. 刚是老师理解错误,问答已修改,同学可以进行查看。

    2. 是会丢失的,当整数较大时,会以科学计数法的方式进行展示,从而导致精度丢失。

    祝学习愉快!

    2020-12-14 14:08:08
  • 提问者 慕尼黑3413982 回复 好帮手慕小尤 #3

    老师,我试了int类型的最大值,转换成double类型,精度并没有丢失。

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

    2020-12-14 21:07:58
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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