;; --------------------------------------------------------------------------------------------------- ;; ;; -- ROUND : Rundet übergebene ZAHL auf STELLENANZAHL. -- ;; ;; -- Bei fehlerhaften Argument wird "nil" zurückgeliefert -- ;; ;; --------------------------------------------------------------------------------------------------- ;; (defun ROUND (ZAHL STELLEN / TEMP ) (if (and(or(=(type ZAHL) 'INT)(=(type ZAHL) 'REAL)) (=(type STELLEN) 'INT)) (progn (setq TEMP (abs ZAHL)) (repeat STELLEN (setq TEMP (* TEMP 10.0))) (cond ( (> (mod TEMP) 0.5) (setq TEMP (+ (fix TEMP) 1))) ( (< (mod TEMP) 0.5) (setq TEMP (fix TEMP) )) ( (= (mod TEMP) 0.5) (if (equal (/ (fix TEMP) 2.0) (fix(/ (fix TEMP) 2.0)) 0.001) (setq TEMP (fix TEMP) ) (setq TEMP (+ (fix TEMP) 1)) ) ) ) (repeat STELLEN (setq TEMP (/ TEMP 10.0))) (setq TEMP (* TEMP (sign ZAHL))) ) ) TEMP ) ;; --------------------------------------------------------------------------------------------------- ;;