社区
C语言
帖子详情
float和int的相互转化输出
haofang666777
2012-09-06 02:11:01
float x,y;
x=5;
y=3;
printf("x=%d y=%d\n",x,y);
return 0;
输出 0和1075052544
int main()
{
printf("%f",5);
printf("%d",5.01);
return 0;
}
输出 0和一个很大的数
哪位高手能够解释一下?不胜感激。
...全文
4243
15
打赏
收藏
float和int的相互转化输出
float x,y; x=5; y=3; printf("x=%d y=%d\n",x,y); return 0; 输出 0和1075052544 int main() { printf("%f",5); printf("%d",5.01); return 0; } 输出 0和一个很大的数 哪位高手能够解释一下?不胜感激。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AnYidan
2012-09-14
打赏
举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:
用printf打印格式和类型不匹配的值 结果不可预料
结果预料起来很费劲而已。
[/Quote]
你违反规则在先,就不要责怪别人不守规矩
startservice
2012-09-14
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
用printf打印格式和类型不匹配的值,结果是不可预料的。
[/Quote]
++
感觉在继续
2012-09-13
打赏
举报
回复
用printf打印格式和类型不匹配的值,结果是不可预料的。
常如意
2012-09-13
打赏
举报
回复
float当按照int输出时,系统会取前四个字节
noal0502
2012-09-13
打赏
举报
回复
Int, float, double 之间的相互转换:
Int :在.NET中,int是一个有符号32位整数 ,无论处理器是32位还是64位。它的.NET框架类型是System.Int32 。
Float:单精度浮点数,32位长度,1位实数符号位(原码表示),1位指数符号位,7位指数位(此八位为移码表示)以及23位数据位(补码表示),在.net中又称为Single。
Double: 64位长度的双精度浮点数,1位符号位,11位指数位,52位数据位。
三者的关系:int可以隐式转换成float和double;float只能强制转换成int,但是可以隐式转换成double;double只能强制转换成float和int。
晚安_好梦
2012-09-13
打赏
举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:
用printf打印格式和类型不匹配的值 结果不可预料
结果预料起来很费劲而已。
[/Quote]
恩,个人结果是可以预料的。只是算起来比较费劲而已,顶9楼。
赵4老师
2012-09-06
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
用printf打印格式和类型不匹配的值 结果不可预料
[/Quote]
结果预料起来很费劲而已。
常如意
2012-09-06
打赏
举报
回复
用printf打印格式和类型不匹配的值 结果不可预料
iamnobody
2012-09-06
打赏
举报
回复
http://en.cppreference.com/w/cpp/io/c/fprintf
用正确的格式符 来输出!!!!!
wanglu343280746
2012-09-06
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
首先解释float x=5;printf("x=%d",x);float型数据在计算机中以IEEE754标准存储第一位为符号位,接下来八位是指数位,后23位为有效数字位,具体规则参照IEEE754,5的机器表示为0 10000001 0100 0000 0000 0000 0000 000,之后还有一个规则,机器在存储浮点数的时候 会以双精度的形式存储,此时就涉及到将单精度转换为双精度的问题,二进……
[/Quote]
学习了
tjl63433
2012-09-06
打赏
举报
回复
首先解释float x=5;printf("x=%d",x);float型数据在计算机中以IEEE754标准存储第一位为符号位,接下来八位是指数位,后23位为有效数字位,具体规则参照IEEE754,5的机器表示为0 10000001 0100 0000 0000 0000 0000 000,之后还有一个规则,机器在存储浮点数的时候 会以双精度的形式存储,此时就涉及到将单精度转换为双精度的问题,二进制表示为0 10000000001 0100 0000 0000 0000(之后还有36个0),以%d输出时,取后32位,所以输出值为0,对5.01用此种办法转换,也讲得出期望值;
接下来,说一下printf("x=%d y=%d\n",x,y);此时y的输出值只于参数表中的有关,即实际上参数表中的y实际上没有传到函数里面,你可以试一下输出printf("x=%d y=%d\n",x);与刚才的输出相同。
辛苦打的,新人求分。
AndyZhang
2012-09-06
打赏
举报
回复
你可以按照IEEE754将5.01转换为字节保存,然后按照int读出,,看看是多少
AndyZhang
2012-09-06
打赏
举报
回复
你要知道float在内存中是如何保存的,是按照IEEE规范的,所以当按照int输出时,系统会取前四个字节,这四个字节可能是float数的指数或者头或者尾的组合,这个值应该是这样的。但是如果你强制转换的话,就不一样了,系统会把float转int保存,这样估计你就能输出5了
图灵狗
2012-09-06
打赏
举报
回复
用printf打印格式和类型不匹配的值,结果是不可预料的。
珍惜生命远离CPP
2012-09-06
打赏
举报
回复
老问题了。
http://topic.csdn.net/u/20090305/22/6365501d-844e-4fd4-9905-ac1c703ba05a.html
C#浮点数和16进制字节数互相转换
该代码可以实现单精度浮点数和16进制字符之间的转换,包含源代码
字符串与整型和浮点数的
相互
转换
分别实现了字符串与整型数字之间的转换, 重点烛字符串与浮点数之间的转换
Java实验二.doc
Java实验二.doc
python 数字类型和字符串类型的
相互
转换实例
今天小编就为大家分享一篇python 数字类型和字符串类型的
相互
转换实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Python字符串、整数、和浮点型数
相互
转换实例
今天小编就为大家分享一篇Python字符串、整数、和浮点型数
相互
转换实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
C语言
70,023
社区成员
243,260
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章