自贡黄明儒 发表于 2013-9-12 10:00:04

保留小数位数(四舍五入)

本帖最后由 自贡黄明儒 于 2013-10-29 08:20 编辑

;;162.1 [功能] 数值后续零清除
;|值为 0 到 3 时仅影响英尺-英寸标注:
DIMZIN
0 消除零英尺和零英寸
1 包含零英尺和零英寸
2 包含零英尺,消除零英寸
3 包含零英寸,消除零英尺
4 消除十进制标注中的前导零(例如,0.5000 变为 .5000)
8 消除十进制标注中的后续零(例如,12.5000 变为 12.5)
12 消除前导零和后续零(例如,0.5000 变为 .5)
|;
;;示例(HH:rtosr 2.500);"2.5"
(defun HH:rtosr (RealNum / DIMZIN1 SHORTREAL1)
(setq DimZin1 (getvar "DIMZIN"))
(setvar "DIMZIN" 8)
(setq ShortReal1 (rtos RealNum 2 8))
(setvar "DIMZIN" DimZin1)
ShortReal1
)

;;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
)

vlisp2012 发表于 2013-9-16 19:49:07

看来大家都会了。

Throne 发表于 2013-9-16 23:16:43

第二个函数中,设置DimZin变量有什么意义呢? 看官方帮助是: 0 消除零英尺和零英寸。新手还是一头雾水,能否解释一下?

sicky111 发表于 2013-9-18 00:16:01

不错的函数,收藏。

czcxxx 发表于 2015-10-24 16:03:24

谁动了我的YD 发表于 2016-5-14 10:20:55

非常感谢这个代码很有用

taoyi0727 发表于 2018-5-4 15:01:11

收藏学习

linyangmjtd 发表于 2019-8-16 13:44:32

有用 感谢了

zjsru_18_505 发表于 2023-11-14 15:57:47

本帖最后由 zjsru_18_505 于 2023-11-14 16:12 编辑


_$ (HH:RTOSR1 9.415 2)
"9.41"
_$ (HH:RTOSR1 8.415 2)
"8.41"
_$ (HH:RTOSR1 7.415 2)
"7.42"
_$ (HH:RTOSR1 6.415 2)
"6.42"

结果不对。
页: [1]
查看完整版本: 保留小数位数(四舍五入)