sai_wq 发表于 2020-8-25 13:19:33

萌新求助

想问一下
scanf("%f", &num);
这是输入浮点型数据
那么浮点型数据里的小数点"."会被认为是浮点型还是属于字符型?

永恒的蓝色梦想 发表于 2020-8-25 13:20:05

?听不懂

Cool_Breeze 发表于 2020-8-25 13:34:18

起个表示作用吧,其中原理我也不了解!

oooooook 发表于 2020-8-25 14:24:18

既然是浮点型数据那么应该也是属于浮点型的
这个问题不用太过深入讨论就记住在scanf函数中%lf对应是double,%f对应float,小数点就是个小数里的一个点

昨非 发表于 2020-8-25 17:59:03

小数点是浮点型数据的一部分啊,干嘛非得抠出来

Minblack 发表于 2020-8-25 22:23:43

当然是属于浮点型,.我感觉只是一个区分整数部分和小数部分而已,楼主想多了!

风过无痕1989 发表于 2020-8-26 01:23:50

       在计算机的世界里是没有小数点的,只有 0 和 1。遵循IEEE-754格式标准,浮点数在计算机内存中占用4字节(Byte),即32-bit。
       一个浮点数由3部分组成:符号部分S + 底数部分M + 指数部分E。
       例如将17.625换算成 float型。
       首先,17.625换算成二进制位:10001.101 ,将 10001.101 向右移(相当于小数点左移),直到小数点前只剩一位。成了 1.0001101 x 2的4次方(因为右移了4位)。此时,我们的底数M和指数E就出来了:
       底数部分M,因为小数点前必为1,所以IEEE规定只记录小数点后的就好,所以此处底数为 0001101 。
       指数部分E,实际为4,但须加上127,固为131,即二进制数 10000011
       符号部分S,由于是正数,所以S为0.
       综上所述,17.625的 float 存储格式就是:
       0100 0001 1000 1101 0000 0000 0000 0000
       转换成16进制:0x41 8D 00 00

       若还不能理解,请查阅有关数字逻辑方面的书籍
页: [1]
查看完整版本: 萌新求助