本帖最后由 Gu_xl 于 2010-12-26 09:32 编辑
回复 icefrog 的帖子
- ;;;gxl-NumJD1 Num1 Jd 按数字修约原则
- 数字保留小数点位数
- ;|数字修约原则
- 1. “四舍六入五成双” 例:3.148-3.1,0.736-0.74,75.5-76
- 当测量值中被修约的数字是5,而其后还有数字时,进位。 如:2.451-2.5
- 一次修约。 如:13.4748-13.47
- |;
- ;(gxl-NumJD1 47.7451 2) 返回 47.75
- ;(gxl-NumJD1 47.745 2) 返回 47.74
- ;(gxl-NumJD1 47.7351 2) 返回 47.74
- ;(gxl-NumJD1 47.735 2) 返回 47.74
- (defun gxl-NumJD1 (Num JD / Num1 Num2 Num3 a b c d)
- (if (> Num 0)
- (setq d 0.5)
- (setq d -0.5)
- )
- (setq Num1 (expt 10. JD))
- (setq Num2 (* Num1 10.)
- Num3 (* 10. Num2)
- )
- (setq a (fix (* Num Num1))
- b (fix (* Num Num2))
- c (fix (* Num Num3))
- )
- (if (= (rem b 10) 5)
- (if (/= (rem c 10) 0)
- (/ (fix (+ (* Num Num1) d)) Num1)
-
- (if (= (rem a 2) 0)
- ;;;直接四舍五入
- ;(/ (fix (+ (* Num Num1) d)) Num1)
- (/ (fix (* Num Num1)) Num1)
- ;;;奇进偶不进
- (/ (fix (+ (* Num Num1) d)) Num1)
- )
- )
- (/ (fix (+ (* Num Num1) d)) Num1)
- )
- )
|