| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1802 人关注过本帖
标题:定义数据类型问题
只看楼主 加入收藏
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
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册: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
快速回复:定义数据类型问题
数据加载中...
 
   



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

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