该程序的计算结果为什么不对?

lbyoo 2005-01-24 02:43:46
int main()
{
float a = 256010224;
float b = 3902;
a = a +b;
printf("%.0f\n",a);
}

输出:256014128
...全文
111 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
master5470 2005-01-24
  • 打赏
  • 举报
回复
编译环境vc++6.0
的结果是256014126

楼主再好好试试
lbyoo 2005-01-24
  • 打赏
  • 举报
回复
改为double就可以了,float还是少用吧
winstonch 2005-01-24
  • 打赏
  • 举报
回复
还是没明白你要打印出来什么
lbyoo 2005-01-24
  • 打赏
  • 举报
回复
但是如果打印的话,怎么写呢,我用printf打印时里面的%不知道怎么写才好,对了,我用的机器是HP-UX zw2 B.11.23 U ia64
winstonch 2005-01-24
  • 打赏
  • 举报
回复
printf("%.0f\n",a);
这里.0是小数点后0位的意思
kobefly 2005-01-24
  • 打赏
  • 举报
回复
其实
double就应该可以了啊

long double在32位机上
也是8位的吧
daylove 2005-01-24
  • 打赏
  • 举报
回复
更机器所能表示的精度有关。
你换个类型看看:
long double
winstonch 2005-01-24
  • 打赏
  • 举报
回复
你想要什么结果?
kobefly 2005-01-24
  • 打赏
  • 举报
回复
浮点数的表示方法是根据IEEE754标准的

是近似表达
自然不可能精确的拉

跟整数的编码方式不同

数值越大, 误差就越大,这是很正常的
suyouxin 2005-01-24
  • 打赏
  • 举报
回复
晕,我的机器怎么得到的是

256014126


kobefly 2005-01-24
  • 打赏
  • 举报
回复
浮点数都是近似值

是根据IEEE754编码的

整数的存储是精确值
但浮点数是不可能精确的拉

69,373

社区成员

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

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