24小时热门版块排行榜    

查看: 3677  |  回复: 21
11楼2012-02-29 16:45:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengxingwang

新虫 (初入文坛)

引用回帖:
: Originally posted by lurencyj at 2012-02-29 16:38:47:
CODE:
if(f==z)

改成
CODE:
if(fabs( f-z ) < 0.005)


#include
#include
void main()
{
        double x,y,t,e,p,f,z;
               x=1;
                   y=2;
           z=128;
                   for(t=1;fabs(t-6)<0.005;t=t+0.01)
                   {
                          e=x*t;
                          p=y*t;
              f=e*p*t;
                          if(fabs(f-z)<0.005)
                                  break;
                   }
                   printf("%f,%f\n",t,f);
}
是不是这样的啊?我改了还是不行,运行结果不对啊,是不是我编的程序有问题啊,C++我不太会编程, 这么简单个循环,被我弄的这么麻烦,我要疯了
12楼2012-02-29 16:55:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

【答案】应助回帖

引用回帖:
6楼: Originally posted by fengxingwang at 2012-02-29 14:43:24:
恩,你知道怎么把这些变量都定义成同一种形式的吗?我想让各个变量都是小数点后几位的。是不int,该改成double或float之类的啊?
#include <stdio.h>
void main()
{
        double x,y,t,e,p,f,z;
                ...

1 为什么不给我金币?
2、不用定义成一种类型,可以把if(f==z)改成 if(abs(f-z)<0.00001)类似这样,就可以了!!!
13楼2012-02-29 17:00:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengxingwang

新虫 (初入文坛)

引用回帖:
: Originally posted by lijie169 at 2012-02-29 17:00:42:
1 为什么不给我金币?
2、不用定义成一种类型,可以把if(f==z)改成 if(abs(f-z)<0.00001)类似这样,就可以了!!!

等会就给哈,每个人都给哈,我现在还没搞好呢。非常感谢你,大家都这么帮我,给钱我都愿意哈。
14楼2012-02-29 17:09:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

peterjade

金虫 (正式写手)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
余泽成(金币+2): 谢谢参与应助! 2012-03-11 23:23:27
经过多次测试,测试开发环境是vc++ 6.0,
如果 double x=128.000000, y=128
       int  a =128;
用 比较运算符 == 比较的结果这三者都是相等的。
我觉得对于数值都是整数的double类型的变量,直接进行判断是相等的,因为在计算机内部可以用二进制数据完整表示。
   而对于某些double类型的数值,在计算机内部都是近似表示的,就像127.1234589等,
    代码中的t=t+0.01,实际上你调试查看变量t在内存当中的值不会是等于4,会是4.xxxxxxxxxxxxx这样的逼近值,所以后来计算的z不可能等于128
必须一步一步脚踏实地,才能站稳脚跟,活在当下
15楼2012-02-29 17:52:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

peterjade

金虫 (正式写手)

【答案】应助回帖


余泽成(金币+1): 谢谢参与应助,欢迎常来程序语言版! 2012-03-11 23:23:40
double这样数据类型的值的比较,最好是用楼上建议的用差值的绝对值是否逼近一个非常小的正数(计算机就会认为是0),来判断是否相等
必须一步一步脚踏实地,才能站稳脚跟,活在当下
16楼2012-02-29 17:55:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sharkyurui1

金虫 (初入文坛)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
余泽成(金币+2): 鼓励讨论! 2012-03-11 23:24:26
不确定是什么地方出错,但是看到几个问题,和楼主探讨一下。
一个就是定义的double变量,printf能用%f正确打印出来么?我记得以前必须写printf("%lf,%lf\n",t,f)才能正确输出double变量的值。
二个就是楼上各位所说浮点数的比较一般都是控制在一定精度内的。
三个就是楼主可以学学调试,在for循环中某一赋值语句上下断点,然后开始调试程序,程序会在断点停下,然后单步执行程序,可以查看每个变量的实时值,就可以知道问题出在哪里了。如果你觉得让t值从1慢慢加到4很麻烦,也可以用条件断点,或者把t的初始值增大到3.9(不推荐,因为可能是浮点数误差累积)。
17楼2012-03-01 08:17:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

★ ★
余泽成(金币+2): 谢谢参与应助! 2012-03-11 23:24:46
引用回帖:
13楼: Originally posted by lijie169 at 2012-02-29 17:00:42:
1 为什么不给我金币?
2、不用定义成一种类型,可以把if(f==z)改成 if(abs(f-z)<0.00001)类似这样,就可以了!!!

lijie169的回答是对的!~~~ 楼主要给的。哈哈!

代码(这次,我运行过),结果是 4.000000,128.000000
CODE:
#include
#include
void main()
{
                double x,y,t,e,p,f,z;
                x=1;
                y=2;
                z=128;
                for(t=1;t<6;t=t+0.01)
                {
                                e=x*t;
                                p=y*t;
                                f=e*p*t;
                                if(fabs(f-z)<0.005)
                                                break;
                }
                printf("%f,%f\n",t,f);
}

很女子很弓虽大
18楼2012-03-01 18:31:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengxingwang

新虫 (初入文坛)

引用回帖:
: Originally posted by lurencyj at 2012-03-01 18:31:42:
lijie169的回答是对的!~~~ 楼主要给的。哈哈!

代码(这次,我运行过),结果是 4.000000,128.000000


#include <stdio.h>
#include <math.h>
void main()
{
                double x,y,t,e,p,f,z ...

谢谢你了,真运行对了
19楼2012-03-06 11:54:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

源定今生

新虫 (初入文坛)

精度范围没确定吧?
20楼2012-03-06 13:08:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 fengxingwang 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[找工作] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 7/350 2026-09-06 11:40 by eObJPa4gWmp6
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 7/350 2026-09-06 11:20 by eObJPa4gWmp6
[基金申请] 科研人应该花精力去思考如何解决问题,而不是去凝练问题 +10 瞬息宇宙 2026-09-01 19/950 2026-09-06 11:15 by jiangxuan2004
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 8/400 2026-09-06 11:09 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-04 7/350 2026-09-06 11:00 by eObJPa4gWmp6
[论文投稿] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-04 8/400 2026-09-06 11:00 by eObJPa4gWmp6
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 8/400 2026-09-06 11:00 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 4/200 2026-09-06 07:20 by E1iiBLMU2XnD
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +6 7ZYIEW2YWn72 2026-09-04 9/450 2026-09-06 06:00 by E1iiBLMU2XnD
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +8 CRJ0Aq2FtVH0 2026-09-03 15/750 2026-09-06 05:48 by E1iiBLMU2XnD
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 5/250 2026-09-06 02:39 by E1iiBLMU2XnD
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 5/250 2026-09-06 02:19 by E1iiBLMU2XnD
[基金申请] 面上没中,邀请各位路过的虫友分析一下分数 +12 jackleilei 2026-09-03 13/650 2026-09-05 18:10 by fireguard
[文学芳草园] 两块石头 +6 阿美_Lml888 2026-09-03 8/400 2026-09-05 13:52 by 阿美_Lml888
[文学芳草园] 初秋的晨风 +4 阿美_Lml888 2026-09-04 6/300 2026-09-05 13:51 by 阿美_Lml888
[基金申请] 学科评审组评审是指会评吗? +6 瞬息宇宙 2026-08-31 9/450 2026-09-05 13:11 by haizai99
[博后之家] 广西大学-广州大学招聘博士后 欢迎广大优秀人才!!! +4 SCSIOyxguo 2026-09-03 7/350 2026-09-05 10:39 by Honglianlian
[硕博家园] Ei源刊怎么投 +4 Fengshun9711 2026-09-04 4/200 2026-09-04 19:30 by 研途知予
[硕博家园] 哈尔滨工业大学韩晓军教授课题组招收2027年硕士推免生及博士研究生 +3 灯灯灯灯DDDD 2026-09-03 3/150 2026-09-03 21:22 by 科研皮皮猪
[基金申请] 要骂人了,新模版改版就是要淡化问题凝练这种虚的东西,结果有个评委还在说凝练得不够 +9 瞬息宇宙 2026-08-31 17/850 2026-09-02 14:04 by anjeeshine
信息提示
请填处理意见