关于数据转换的问题中(int)输出问题

关于数据转换的问题中(int)输出问题

// 1、 初始化一个整型变量ae,并赋值5

                int ae = 5;

                // 2、 初始化一个浮点型变量be,并赋值2.2

                float be = 2.2;

                // 3、 初始化一个布尔型ce,并赋值false

                BOOL ce = false;

                // 4、 初始化一个整型变量d,并将a+b+c的值赋值给d

                float deb = (int)ae+be+ce;

                // 5、 打印输出d的值

                NSLog (@"%f",deb);

定义了(int)输出的依然是浮点数,这写了跟没写有什么区别?

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

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

4回答
Tender10 2017-06-20 09:37:17

因为浮点型的精确度是比较差的,因为是单精度类型,所以一般输出是会选择保留几位小数,比如这里可以保留三位小数输出,那输出语句就可以写成NSLog(@"uu2=%.3f",uu2);不过double类型的精确度比较高,直接使用double类型定义变量,进行输出就没有问题了。

提问者 天才杰 2017-06-19 20:55:20

http://img1.sycdn.imooc.com/climg//5947c982000110a509600909.jpg

  float uu1 =99.999;

        float uu2 =(float)uu1;

        NSLog(@"uu2=%f",uu2);

        UU2的打印结果为什么是99.999001?


Tender10 2017-06-16 09:46:51

float deb = (int)ae+be+ce;之所以结果输出的float类型,那是因为你最终输出的是deb,deb是float类型,你最终的结果当然是float类型了。你这里定义ae为int,并不是没有意义。因为如果在计算的时候你只想保留浮点数的整数部分那就转化成int类型,计算时就只会保留整数部分了。最终输出的结果的类型,是根据你输出数据的类型来决定的,你将ae转化成int类型跟deb没有关系,又不是将deb转出成int类型了。

Tender10 2017-06-15 09:23:22

你好,你可以看一下第四点你定义的deb变量并不是int类型,而是浮点类型,最后第5点你输出的语句中采用的也是%f浮点类型,而不是%d整型。应该将第4点处的float deb修改成int deb,第5点应该将%f修改成%d。

  • 提问者 天才杰 #1
    我不是问输出结果,而是——当定义deb是float浮点数,打印也是%f浮点数据时,无论()中是int还是float,得到的结果都一样。那为什么还需要在()上填写数据类型?不写()可以?
    2017-06-15 23:32:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
iOS入门:基础语法与常用控件
  • 参与学习       1337    人
  • 提交作业       712    份
  • 解答问题       1878    个

很多人都在疑问没有基础该怎么学习iOS开发?不用担心,本路径采用游戏关卡式的教学模式,并且以经典OC与最新Swift双重结合的教学内容,帮助大家快速掌握两种iOS开发语言基础,去掉“零”标签。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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