社区
C语言
帖子详情
C语言为什么int用%f输出是0.000000?
Quester-King
2012-03-04 03:12:24
printf("%f",2);
我是想让这个整形数“2”按照浮点数输出。
我猜测输出应该是2.0一类的浮点数,可是为什么输出是0.0000000?
如果把代码改成:
printf("%f",(float)2);
就可以了,输出就是2.00000
这是为什么呢?
...全文
2663
8
打赏
收藏
C语言为什么int用%f输出是0.000000?
printf("%f",2); 我是想让这个整形数“2”按照浮点数输出。 我猜测输出应该是2.0一类的浮点数,可是为什么输出是0.0000000? 如果把代码改成: printf("%f",(float)2); 就可以了,输出就是2.00000 这是为什么呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Saleayas
2012-03-04
打赏
举报
回复
1
在网上你可以看到说 printf 家族函数都是不安全的。
这就是原因。
AnYidan
2012-03-04
打赏
举报
回复
看看可变参数
xspace_time
2012-03-04
打赏
举报
回复
2转化为double类型0|10000000000|0000000000000000000000000000000000000000000000000000
按double读出来就是0*2^11
没有蜡
2012-03-04
打赏
举报
回复
前面有个帖子很火的printf("%f,整形");
不过讨论这些没什么意义
huangziyun
2012-03-04
打赏
举报
回复
请参考IEEE754浮点数存储标准
printf("%f",2);
这样指定输出并不会进行隐式类型转换,只是将2在内存中的二进制形式按照float存储标准来解析
pp25210
2012-03-04
打赏
举报
回复
printf();函数中的参数“%f” “%d”等,只是用来告诉编译器对数据的读取以及处理方式,如果用%f 则编译器会从&2的启示地址开始读取 sizeof(float)个字节然后进行浮点型数据的处理,并不会对原数据做类型转换,所以printf("%f",2); 输出是0.0000000 而 printf("%f",(float)2);输出就是2.00000。至于具体的浮点型数据和整型数据的截取处理方式可以去看看《C primer plus》,里面有提到过,至于具体章节记不清了
bluewanderer
2012-03-04
打赏
举报
回复
printf("%f", 2) <- 参数"%f"是运行时的,按照规则编译器是不可能知道你希望第二个参数是浮点数类型,所以也就不可能把int类型的2自动转换成浮点类型的2。
另外%f需要的是64位的double,现在你只提供了低32位,高32位只能依赖栈里原有的数据。double类型最高12位小于1003,对应的十进制数就肯定小于0.000001,所以很容易就会输出0.000000
Arnold9009
2012-03-04
打赏
举报
回复
请参考IEEE754浮点数存储标准
printf("%f",2);
这样指定输出并不会进行隐式类型转换,只是将2在内存中的二进制形式按照float存储标准来解析
C语言
程序设计模拟试题A(附答案).doc
C语言
程序设计模拟试题A(附答案).doc
c语言
double类型默认
输出
小数几位
在本篇文章里小编给大家分享的是关于
c语言
double类型默认
输出
小数几位的相关知识点,需要的朋友们可以学习下。
为什么pow()函数使用%d
输出
一直为0?为什么整数使用%f
输出
也一直为0?
为什么pow()函数使用%d
输出
一直为0?为什么整数使用%f
输出
也一直为0?两者有何联系? 通过下面这个简单代码即可直观发现他们的
输出
#include<stdio.h> #include<math.h>
int
main() { pr
int
f("%d ",pow(2,0)); pr
int
f("%f ",1); pr
int
f("%f "...
C语言
中的pr
int
f用%d
输出
float类型数据出现或以%f
输出
int
型数据的结果为什么是0
float a=7.5f; 如果用pr
int
f("%d",a);
输出
的是0。 但float型用%d
输出
是否一定是0呢,答案肯定不都是0; 为什么 7.5 用%d
输出
的是0?分析如下: 首先来了解下pr
int
f的
输出
格式,
int
和 long
int
都是32位的,用%d
输出
;float 、double都是%f
输出
,但 float ...
C语言
中,整型1用float类型
输出
,为什么会是
0.000000
?
因为编译器在
输出
的时候会先把它转换为double类型(精度高,0多
0.000000
001),然后再转换为float类型,丢失精度,所以我们会看到
0.000000
。有什么问题欢迎留言!~~~~...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章