为什么没有进位了???
搞不懂在编辑器里运行下来没有进位,一行行运行也没进位命令行里单独去运算又进位了
其他的图运行都良好,今天突然间发现这个不进位了
(defun C:33 (/ SS S1 Q1 D Q2 Q3)
(setq ss (entsel "\n选择多段线: "))
(setq s1 (car ss));SS为entsel多线段
(command "area" "e" s1)
(setq q1 (getvar "area"))
(setq d (getpoint "\n 请点取面积所放的位置:"))
(setq q2 (* (/ q1 6000) 9))
(setq q1 (rtos q1 2 2))
(setq q2 (rtos q2 2 3))
(setq q3 (strcat "地块面积S=" q1 "平方米 合" q2 "亩"))
(entmake (list '(0 . "TEXT")(cons 1 Q3)(cons 10 d)(cons 40 1)(cons 62 3)(cons 7 "宋体")))
)
_$ (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"
(defun myrtos2(real n / a)
(setvar'dimzin 0)
(rtos(+ real(/ 0.5(expt 10(1+ n))))2 n))
rtos是有一个变量控制的;;162.2 [功能] 保留小数位数(四舍五入)
;|(rtos 数 mode 小数位数)
mode
1Scientific
2Decimal
3Engineering (feet and decimal inches)
4Architectural (feet and fractional inches)
5Fractional
|;
;;示例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
)
截图放在此处了
懂的,有时间的帮忙解答一下
感谢老师抽空解惑
系统参数都看了,都是初始值。同一幅图里面29.1278的线出来的是29.13
35.2950出来的是35.29
99.9450出来的是99.94
26.8290出来的是26.83
38.8859出来的是38.89
感觉这个逢5不进位啊
整懵了
1.9450进位了
99.9450却不进位
1.2750,1.2650,1.2651,1.2652全都进位,1.2950又不进
排查了和前后奇偶性的关系
“四舍五入”.进一的概率为5/9
奇进偶不进,就是解决这种情况.实际上就是“四舍六入”.当末尾为5时,看5前面一位,奇进偶不进
举例子说明如下:
奇进偶不进,就像1.25,因为2是偶数,所以是1.2。又像1.35,因为3是奇数,所以是1.4
1.9450进位了,99.9450没有进
2.9450不进,3.9450也不进
我试了一堆的数,真没有发现是奇进偶不进。我们有个标注程序是奇进偶不进。那个我知道
大概率是实数精度问题,看着是99.9450,实际可以能是99.944999999999,那么它确实不应该进位
页:
[1]
2