社区
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和一个很大的数
哪位高手能够解释一下?不胜感激。
...全文
4094
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进制字节数互相转换
本文将深入探讨如何使用C#来实现单精度浮点数(Single)与16进制字符串的
相互
转换。 首先,我们需要了解浮点数在计算机中的存储方式。单精度浮点数(Single)在C#中占用4个字节(32位),按照IEEE 754标准,这32位...
字符串与整型和浮点数的
相互
转换
在编程领域,字符串、整型和浮点数是三种常见的数据类型,它们在处理各种...在Python中,`
int
()`, `
float
()`, 和 `str()`是实现这些转换的核心函数,通过适当使用和异常处理,我们可以确保数据转换的准确性和可靠性。
Java实验二.doc
在Java中,我们可以使用强制转换符来实现char型数据和
int
型数据之间的
相互
转换。 例如,在实验中,我们使用强制转换符将char型数据cStart和cEnd转换为
int
型数据startPosition和endPosition,以便在后续的循环中使用...
python 数字类型和字符串类型的
相互
转换实例
这将分别把`num`和`
float
_num`转换为对应的字符串。 2. 使用格式化字符串: 另一种方式是使用百分号`%`操作符来格式化字符串,这在处理整数时特别有用: ```python num = 322 str_num = '%d' % num ``` 这会...
Python字符串、整数、和浮点型数
相互
转换实例
在Python编程中,数据类型转换是一项基础而重要的操作,涉及到字符串、整数和浮点型数之间的互相转换。本文将详细介绍如何在Python中实现这些数据类型的转换,并提供一些实例来说明具体的转换方法。 首先,我们要...
C语言
70,021
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章