| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2511 人关注过本帖
标题:再次请教精度问题(继4月18日《请教筛选平方数》之续)
只看楼主 加入收藏
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
结帖率:73.44%
收藏
已结贴  问题点数:13 回复次数:12 
再次请教精度问题(继4月18日《请教筛选平方数》之续)
用以下代码
VFP筛选平方数.rar (1.56 KB)

CLEAR
CLOSE  all
SET SAFETY OFF
SET DECIMALS TO 9
USE 记录表
PACK
ZAP
  FOR n=85520000 TO 85553220                  
   FOR i=66610000 TO 66611050
列1 = 2*n*n-i*i            
    IF   INT(SQRT(列1))=SQRT(列1)   
        APPEND BLANK
        REPLACE  n的值 WITH  n
        REPLACE  i的值 WITH  i                                               
        REPLACE  平方数记录 WITH  SQRT(2*n*n-i*i)
       ELSE     
       LOOP      
    ENDIF
 ENDFOR
ENDFOR
*------------
  DELETE FILE *.BAK
 MESSAGEBOX('本 次 运 行 结 束 !!',64,'信息提示')
 运行得到:
当n=85529712、i=66610043时,SQRT(2*n*n-i*i)=100964179,但通过笔算2*n*n-i*i=10193765441144039,而100964179*100964179=10193765441144041,显然前者比后者小2,出现误差了,请教先生们如何才能使代码运行得到精确结果,谢谢
搜索更多相关主题的帖子: 精度 平方 SQRT REPLACE WITH 
2018-04-20 14:22
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:13 
看看是否与这个有关(VFP帮助的说法):
图片附件: 游客没有浏览图片的权限,请 登录注册
2018-04-20 15:12
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 2楼 吹水佬
那先生我现在的计算结果还不到16位啊
2018-04-20 15:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
10193765441144039
10193765441144041
12345678901234567 是17位
2018-04-20 15:38
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 2楼 吹水佬
哦,最后结果是不到16位,而中间过程中倒是达到17位的,那vfp的运算最多位只能是不超16位吗,这样不是太遗憾了吗(这款软件有缺陷了)
2018-04-20 15:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用fdxxhjc在2018-4-20 15:38:52的发言:

哦,最后结果是不到16位,而中间过程中倒是达到17位的,那vfp的运算最多位只能是不超16位吗,这样不是太遗憾了吗(这款软件有缺陷了)

也不算是什么“缺陷”,超算也是有限的。
可以用数字串来表达,模拟算式运算来处理简单的大数运算。
2018-04-20 15:43
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 6楼 吹水佬
那请教先生在我的困惑中想得到精确的结果要如何修改代码才可,谢谢先生指导
2018-04-20 15:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 7楼 fdxxhjc
参考6楼
2018-04-20 16:43
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 8楼 吹水佬
先生您这个6楼的文字说明到代码我不会了,请先生指教,谢谢先生了
2018-04-21 11:46
井绳
Rank: 2
等 级:论坛游民
帖 子:97
专家分:69
注 册:2010-6-29
收藏
得分:0 
100964179=100000000+964179
所以100964179*100964179=(100000000+964179)*(100000000+964179)
以下分解因式应该没问题
其中100000000*100000000无须计算,用0的个数串接
2*100000000*964179是在2*964179后面串接0
964179*964179在VFP能力之内
不知道这是不是吹水版主的意思?

[此贴子已经被作者于2018-4-21 13:34编辑过]

2018-04-21 13:32
快速回复:再次请教精度问题(继4月18日《请教筛选平方数》之续)
数据加载中...
 
   



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

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