打印

浮点误差问题

[复制链接]
1008|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秋天落叶|  楼主 | 2012-4-7 19:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
输出所有形如aabb的四位完平方全数。
#include <stdio.h>#include <math.h>
int main()
{
   
int a,b,num;
   
double m;

   
for(a=1; a<=9; a++)
        
for(b=0; b<=9; b++)
        {
            num
=a*1100
+ b*11;
            m
=sqrt(num);
            
if(floor(m+0.5)==m)   //请注意此处
                printf("%.d\n",num);
        }
}
//注释处到底是怎么运行的?
难道是先把浮点型转换为整形再和floor()比较?

相关帖子

沙发
火箭球迷| | 2012-4-7 19:22 | 只看该作者
浮点数存在误差,但是这个误差是极小的。
floor(m+0.5)这种方式可以将精度控制到整数位。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:落叶很美

138

主题

3044

帖子

1

粉丝