找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1214|回复: 20

[求助] 在不同CAD版本中相同算式为何结果不同?

[复制链接]

已领礼包: 6881个

财富等级: 富甲天下

发表于 2017-3-28 15:57:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在32位CAD2018和CAD2007中,用相同的计算式,对比结果:

CAD2007到2016和64位CAD2017和2018用此式计算,结果均相同
(rem (ATOF "20107019021211566") 56789) = 51447.0  32位CAD2007


32位CAD2017和2018计算出来却不同?不知是什么原因?
(rem (ATOF "20107019021211566") 56789) = 51451.0   32位CAD2017

请教各位大师,给指点一下,如何修改才能与CAD2007得到相同的计算结果?

谢谢


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2017-3-28 16:05:03 | 显示全部楼层
32位CAD2007到2016和64位CAD2017和2018用此式计算,结果均相同,也就是说在64位系统上所有版本的计算结果均相同。
(rem (ATOF "20107019021211566") 56789) = 51447.0  32位CAD2007
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2017-3-28 16:07:53 | 显示全部楼层
x64的2013 2008都是 51447.0,我怀疑跟系统变量有关
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2017-3-28 16:11:37 | 显示全部楼层
64位系统CAD2007-2018的结果都相同

就是32位的CAD2017和2018不同

请大师指点一下,在32位系统中如何修改,才能使CAD2017与CAD2007得到相同的计算结果  51447.0 ?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-3-28 17:39:11 | 显示全部楼层
2017 32位的 (ATOF "20107019021211566") 这个值是多少?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2017-3-28 18:24:35 | 显示全部楼层

将以上拆开分析如下               
               
(ATOF "20107019021211566") = 2.0107e+016 32位CAD2007                
(ATOF "20107019021211566") = 2.0107e+16  32位CAD2017               
               
(rem 2.0107e+016 56789) = 31488.0  32位CAD2007  此处是相同的               
(rem 2.0107e+16 56789) = 31488.0   32位CAD2017  此处是相同的


但合并在一起后,在32位的CAD2017上就不同了

(rem (ATOF "20107019021211566") 56789) = 51447.0  32位CAD2007

(rem (ATOF "20107019021211566") 56789) = 51451.0  32位CAD2017 为什么此处不同??


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2017-3-28 18:26:25 | 显示全部楼层
本帖最后由 ynhh 于 2017-3-28 18:27 编辑

CAD2017  32位Win7系统

(rem (ATOF "20107019021211566") 56789) = 51451.0

如何设置才能与大多数(CAD2004---2016)的相同为 51447.0
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-3-28 18:39:34 | 显示全部楼层

根据你的实验,那你就设置个变量看看

(setq a (ATOF "20107019021211566") )
(setq b (rem a 56789) )

看看这样结果如何?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2017-3-28 21:41:49 | 显示全部楼层
本帖最后由 ynhh 于 2017-3-28 21:44 编辑

谢谢大师的指点
但在32位Win7系统中的CAD2018中
结果还是 51451.0

其它在32位Win7系统中的CAD2007,64位Win10系统中2007-2018
结果均是 51447.0


真是找不出是什么原因了。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-28 22:13:54 | 显示全部楼层

应该是浮点数计算的原因,机器没你那么多版本,不好说。

你试试把 atof 改成 distof 看看结果如何?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2017-3-28 22:38:09 | 显示全部楼层

感谢版主的指点
用你说的 distof

在32位Win7系统中的CAD2007和2018中
结果统一为 51451.0

虽然不能与大多数用 atof 的统一为 51477.0
但也算是一个在同一台电脑上能将多个CAD版本计算值统一的办法
衷心感谢版主的热心指导
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-3-28 22:43:34 | 显示全部楼层

distof 和 atof 功能是一样的,能解决就好了。不用纠结atof,把你的代码都改成distof吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2017-3-28 23:03:08 | 显示全部楼层

衷心感谢版主的热心指导再次感谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2017-3-29 15:40:21 | 显示全部楼层


请版主看一下

以下这个
http://bbs.mjtd.com/thread-174967-1-1.html

超大整数取余,不知对不对?


因无法验证,计算器和电子表都不能计算这么多的位数啊.

其结果和CAD计算的都不一样啊?

普通浏览复制代码

  • 0.jpg (defun lrem (snum mod / r)
  • 1.jpg   (while (/= "" snum)
  • 2.jpg     (setq r    (rem (atoi (substr snum 1 9)) mod)
  • 3.jpg     snum (substr snum 10 (- (strlen snum) 9))
  • 4.jpg     snum (strcat (itoa r) snum)
  • 5.jpg     )
  • 6.jpg     (if (< (atoi snum) mod) (setq snum ""))
  • 7.jpg   )
  • 8.jpg   r
  • 9.jpg )






_$ (lrem "20107019021211566" 56789)
51449

对字符串保存的超大整数取余,每次取9位,确保不超过32位整数范围进行操作

1、先取"201070190"取余为37130
2、从剩余的字符串中取出一定长度的数字与余数结合成一个九位的数字(32位最大整数是个10位的数字),即“371302121”
3、重复1,取余为15639; 重复2,数字为"156391566",重复1,取余为51449
4、判断剩下的数字小于mod,结束。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-3-29 16:16:21 | 显示全部楼层

你做这些是做理论研究,还是工作中要用到这么大的数?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-24 06:28 , Processed in 0.399285 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表