精度问题

tk911914 2015-12-21 01:50:41
int main(void)
{
double f = floor(70459.43*100.00);
printf("%f\n",f);
return 0;
}

PS:为啥打印出来是 7045942.000000; 反而需要将 floor((float(70459.43*100.00)); 就正确了,或者调用floorf函数; 而且很奇怪的是大部分的数据都没有问题。。。。。。
...全文
63 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-12-21
  • 打赏
  • 举报
回复
paschen 2015-12-21
  • 打赏
  • 举报
回复
浮点数在内存中有误差,很多十进制小数在二进制里就没办法精确表示(比如0.1) 十进制下的:70459.43的二进制下表示出来就是70459.429999999993.... 所以比较浮点数是否相等,应该比较两数差的绝对值是否足够小

69,371

社区成员

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

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