明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 998|回复: 14

[提问] 为什么没有进位了???

[复制链接]
发表于 2022-8-2 09:57:57 | 显示全部楼层 |阅读模式


搞不懂在编辑器里运行下来没有进位,一行行运行也没进位
命令行里单独去运算又进位了
其他的图运行都良好,今天突然间发现这个不进位了


  1. (defun C:33 (/ SS S1 Q1 D Q2 Q3)
  2. (setq ss (entsel "\n选择多段线: "))
  3.   (setq s1 (car ss));SS为entsel多线段
  4.   (command "area" "e" s1)
  5.   (setq q1 (getvar "area"))
  6.   (setq d (getpoint "\n 请点取面积所放的位置:"))
  7.   (setq q2 (* (/ q1 6000) 9))
  8.   (setq q1 (rtos q1 2 2))
  9.   (setq q2 (rtos q2 2 3))
  10.   (setq q3 (strcat "地块面积S=" q1 "平方米 合" q2 "亩"))
  11.   (entmake (list '(0 . "TEXT")(cons 1 Q3)(cons 10 d)(cons 40 1)(cons 62 3)(cons 7 "宋体")))
  12. )


发表于 2022-8-3 08:46:58 | 显示全部楼层
本帖最后由 llsheng_73 于 2022-8-3 08:51 编辑
ht1480 发表于 2022-8-2 16:54
后面我是直接画一个1米宽,不同长度的长方形来测试的。没有解决掉
暂时不找原因了,感谢大家!耽误大家 ...

_$ (setq real 35.2950)
35.295
_$ (rtos real 2 2)
"35.30"
_$ (setq real(- 35.2950 1e-5))
35.295
_$ real
35.295
_$ (rtos real 2 2)
"35.29"


  1. (defun myrtos2(real n / a)
  2.   (setvar'dimzin 0)
  3.   (rtos(+ real(/ 0.5(expt 10(1+ n))))2 n))

回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-2 10:06:55 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2022-8-2 10:09 编辑

rtos是有一个变量控制的



;;162.2 [功能] 保留小数位数(四舍五入)
;|(rtos 数 mode 小数位数)
mode
1  Scientific
2  Decimal
3  Engineering (feet and decimal inches)
4  Architectural (feet and fractional inches)
5  Fractional
|;
;;示例1 保留一位小数,四舍五入(HH:rtosr1 2.555 1);"2.6"
;;示例2 取整数,四舍五入(read(HH:rtosr1 215.46 0)),返回215
;;示例3 十位数,四舍五入(* (read(HH:rtosr1 (/ 215.46 10) 0)) 10),返回220
;;示例4 保留一位小数,四舍五入(read(HH:rtosr1 215.46 1)),返回215.5
(defun HH:rtosr1 (RealNum n / DIMZIN1 SHORTREAL1)
  (setq DimZin1 (getvar "DIMZIN"))
  (setvar "DIMZIN" 0)
  (setq ShortReal1 (rtos RealNum 2 n))
  (setvar "DIMZIN" DimZin1)
  ShortReal1
)

 楼主| 发表于 2022-8-2 10:07:39 | 显示全部楼层
本帖最后由 ht1480 于 2022-8-2 10:43 编辑

截图放在此处了
懂的,有时间的帮忙解答一下

本帖子中包含更多资源

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

x
 楼主| 发表于 2022-8-2 10:26:15 | 显示全部楼层
自贡黄明儒 发表于 2022-8-2 10:06
rtos是有一个变量控制的

感谢老师抽空解惑
 楼主| 发表于 2022-8-2 10:58:39 | 显示全部楼层
自贡黄明儒 发表于 2022-8-2 10:06
rtos是有一个变量控制的

系统参数都看了,都是初始值。同一幅图里面29.1278的线出来的是29.13
35.2950出来的是35.29
99.9450出来的是99.94
26.8290出来的是26.83
38.8859出来的是38.89
感觉这个逢5不进位啊

点评

要看后面一位是奇数,还是偶数  发表于 2022-8-2 11:05
 楼主| 发表于 2022-8-2 11:55:32 | 显示全部楼层
ht1480 发表于 2022-8-2 10:58
系统参数都看了,都是初始值。同一幅图里面29.1278的线出来的是29.13
35.2950出来的是35.29
99.9450出 ...

整懵了
1.9450进位了
99.9450却不进位
1.2750,1.2650,1.2651,1.2652全都进位,1.2950又不进
排查了和前后奇偶性的关系

本帖子中包含更多资源

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

x
发表于 2022-8-2 12:02:11 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2022-8-2 12:05 编辑

“四舍五入”.进一的概率为5/9
奇进偶不进,就是解决这种情况.实际上就是“四舍六入”.当末尾为5时,看5前面一位,奇进偶不进
举例子说明如下:
奇进偶不进,就像1.25,因为2是偶数,所以是1.2。又像1.35,因为3是奇数,所以是1.4
 楼主| 发表于 2022-8-2 12:11:58 | 显示全部楼层
自贡黄明儒 发表于 2022-8-2 12:02
“四舍五入”.进一的概率为5/9
奇进偶不进,就是解决这种情况.实际上就是“四舍六入”.当末尾为5时,看5前面 ...

1.9450进位了,99.9450没有进
2.9450不进,3.9450也不进
我试了一堆的数,真没有发现是奇进偶不进。我们有个标注程序是奇进偶不进。那个我知道
发表于 2022-8-2 14:26:37 | 显示全部楼层
ht1480 发表于 2022-8-2 10:58
系统参数都看了,都是初始值。同一幅图里面29.1278的线出来的是29.13
35.2950出来的是35.29
99.9450出 ...

大概率是实数精度问题,看着是99.9450,实际可以能是99.944999999999,那么它确实不应该进位
 楼主| 发表于 2022-8-2 16:54:38 | 显示全部楼层
llsheng_73 发表于 2022-8-2 14:26
大概率是实数精度问题,看着是99.9450,实际可以能是99.944999999999,那么它确实不应该进位

后面我是直接画一个1米宽,不同长度的长方形来测试的。没有解决掉
暂时不找原因了,感谢大家!耽误大家宝贵时间了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 21:33 , Processed in 0.194808 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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