仅供参考
- ;; simple math string parser
- ;; arguments:
- ;; expr - the string in form: "A Space Symbol Space B"
- ;; where A and B the strings wich are represents a numeric values
- ;; i.e. "100 - 50", "100 / 50" etc
- (defun expresseval (expr / lst sym)
- (setq lst (read (strcat "(" expr ")"))
- sym (cadr lst))
- (cond ((/= (length lst) 3)
- nil)
- ((equal sym '+)
- (+ (car lst) (caddr lst)))
- ((equal sym '-)
- (- (car lst) (caddr lst)))
- ((equal sym '*)
- (* (car lst) (caddr lst)))
- ((equal sym '/)
- (/ (car lst) (caddr lst)))
- (T nil)
- )
- )
- Usage: (setq plwid (expresseval "25.64 - 15.45"))
~'J'~ |