书上看到关于数据类型的一段话,不理解,盼解释!多谢

炼气士 2011-07-24 10:52:49
原文如下:
当整型值转化为float型值时,也可能损失精度,float型值仅要求6位数字的精度,如果将一个超过6位数字的整型值给一个flaot型变量时,其结果可能是该整型值的近似值
当float型值转化为整型值时,小数部分被舍去(并非四舍五入),如果float值过于庞大,无法容于整型值中,那么其结果将是未定义的。

上面两段话,没理解到,请帮忙解释,最好是有例子!
谢谢!
...全文
145 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2011-07-24
  • 打赏
  • 举报
回复
因为float只有23个bit用来表示精度,这样转化为10进制的话大约6位数字的精度了。

至于float转化为整数,因为float的表示范围比整型int表示的范围大得多,当你讲一个很大的float赋给一个整型时必然溢出了。
mymtom 2011-07-24
  • 打赏
  • 举报
回复
float 的精度只有23位
http://zh.wikipedia.org/wiki/IEEE_754
adw其 2011-07-24
  • 打赏
  • 举报
回复
第一句:
double a=1.23456789;
float b;
b=a;//此时,b=1.234568,0.00000089将被上舍五入到十万分位.
第二句:
double a=1.23456789;
int b;
b=a;//此时b为1;舍去小数点后的数值,整形是没有小数点的.
//
double a=66666.66666;
int b;
b=a;//由于int 类型的最大有效值是65535,当数值超出了这个范围,得到的数值是未知的;
//会报错.
机智的呆呆 2011-07-24
  • 打赏
  • 举报
回复
百度
float内存布局
int 内存布局
apingfang 2011-07-24
  • 打赏
  • 举报
回复

#include<cstdio>
int main()
{
int a=100001,c;
float b=3.1415926,d;
c=b,d=a;
printf("%d\n%f\n",c,d);
return 0;
}
3
100001.000000
Press any key to continue...
是这个意思?
pathuang68 2011-07-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pengzhixi 的回复:]

因为float只有23个bit用来表示精度,这样转化为10进制的话大约6位数字的精度了。

至于float转化为整数,因为float的表示范围比整型int表示的范围大得多,当你讲一个很大的float赋给一个整型时必然溢出了。
[/Quote]

请教彭大侠:float转换为int应该不会溢出吧?我觉得是精度丢失,而不是溢出。
AnYidan 2011-07-24
  • 打赏
  • 举报
回复
计算机中的数据是有范围和精度的,与数学中的不同
hongwenjun 2011-07-24
  • 打赏
  • 举报
回复
换本书 看看吧
不要用float了 比较老的教材才在 float 上唧唧歪歪
一般用 int double 就可以了
至善者善之敌 2011-07-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mymtom 的回复:]
float 的精度只有23位
http://zh.wikipedia.org/wiki/IEEE_754
[/Quote]

+++1,楼上的几位解释的都很清楚了
Leo___T 2011-07-24
  • 打赏
  • 举报
回复
刚开始学C,进来学习下
Frog1228 2011-07-24
  • 打赏
  • 举报
回复
我也在看《C和指针》。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧