标题:定义数据类型问题
只看楼主
lwy2019
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2019-10-11
结帖率:33.33%
已结贴  问题点数:6 回复次数:3 
定义数据类型问题
#include<stdio.h>
#include<math.h>
void main()
{
    //一个整数, 它加上100后是一个完全平方数,
    //再加上168又是一个完全平方数, 请问该数是多少?
    int  i;
    double x, y;//问题在这里  用double 编译通过 答案不对 用 int 或者 long 都可以
// 求老师讲解  谢谢
    for ( i = 1; i < 10000; i++)
    {
        x = sqrt(i + 100);
        y = sqrt(i + 100 + 168);
        if (x*x == i + 100 && y*y == i + 268)
        {
            printf("%d\n", i);
        }
    }


    getchar();
}
搜索更多相关主题的帖子: sqrt 数据类型 定义 double 平方 
2019-10-16 10:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
这是数学问题,
x=sqrt(i+100), 然后 if( x*x == i+100
当然有可能相等啦(之所以说“有可能”而不是“必然”,是因为 浮点数 不是 实时,只有有限精度)

随便举个例子吧,x = sqrt(108) = 10.3923…,然后 10.3923… * 10.3923… = 108 难道不是很正常?!

总之吧,你就不该用 sqrt
2019-10-16 10:47
lwy2019
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2019-10-11
得分:0 
嗯  明白了 谢谢了 那这如果不用  sqrt函数 还可以用其他的什么函数
2019-10-16 23:15
宁缺T
Rank: 1
等 级:新手上路
帖 子:21
专家分:8
注 册:2019-9-12
得分:3 
你可以把x与(int)x相减,看结果是不是等于零就好了。

Stay hungry,Stay foolish.
2019-10-19 21:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497296-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.880741 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved