C中浮点数运算的奇怪现象

dengxianzhi 2012-10-07 12:35:39
哪位大神帮我看一下,谢过。。。。。。。一直搞不明白这是怎么回事

#include <stdio.h>

int main()
{
double t = 0.432100;

if(t*10000 == (int)(t*10000))
printf("true");
else
printf("false");
printf("\n");
printf("t*1000 = %lf\n", t*10000);

return 0;
}

运行结果:
false
t*1000 = 4321.000000

...全文
383 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzh8430 2012-10-08
  • 打赏
  • 举报
回复
浮点运算是用用< >等运算符
千树之影 2012-10-08
  • 打赏
  • 举报
回复
winxp,vs2008的结果是true. 楼主用的什么环境?
漫步者、 2012-10-08
  • 打赏
  • 举报
回复
不要用double ,float去使用== ,!=来比较,尽量用<=,>=来比较
AnYidan 2012-10-08
  • 打赏
  • 举报
回复
浮点数比较不能用 ==; 只要两者之差在一个足够小的范围内,即可认为相等
dengxianzhi 2012-10-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

winxp,vs2008的结果是true. 楼主用的什么环境?
[/Quote]

gcc
xspace_time 2012-10-08
  • 打赏
  • 举报
回复
有神马问题吗
JiMoKuangXiangQu 2012-10-07
  • 打赏
  • 举报
回复
学习一下浮点规格,以及数据类型之间的显/隐式转换.
ping_IP 2012-10-07
  • 打赏
  • 举报
回复
你的最后一个输出函数有点问题,数值对不上。
suphbird 2012-10-07
  • 打赏
  • 举报
回复
浮点类型不能使用 “==” “>=”等运算符
cao_julians 2012-10-07
  • 打赏
  • 举报
回复
十进制小数转二进制表示时,可能出现循环小数、。。。无理数
图灵狗 2012-10-07
  • 打赏
  • 举报
回复
参考IEEE754(http://en.wikipedia.org/wiki/IEEE_floating_point)浮点数规格。
newtee 2012-10-07
  • 打赏
  • 举报
回复
浮点数在计算机中存储的是不精确的数

69,373

社区成员

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

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