diff options
author | Jay Belanger <jay.p.belanger@gmail.com> | 2008-08-05 03:38:24 +0000 |
---|---|---|
committer | Jay Belanger <jay.p.belanger@gmail.com> | 2008-08-05 03:38:24 +0000 |
commit | 57675fb5578db241eb2b62fce41ad864dae56bdf (patch) | |
tree | 8a978186b01930e191361cb3f6311b9a4c053123 /lisp/calc | |
parent | 4e6225928e54d42a7899dc20a5f56da51e056332 (diff) | |
download | emacs-57675fb5578db241eb2b62fce41ad864dae56bdf.tar.gz |
(math-read-number): Handle C numbers beginning with 0 correctly.
Diffstat (limited to 'lisp/calc')
-rw-r--r-- | lisp/calc/calc.el | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index 0721e8a983f..a4a6387296b 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el @@ -3455,7 +3455,7 @@ largest Emacs integer.") ;;; Parse a simple number in string form. [N X] [Public] -(defun math-read-number (s) +(defun math-read-number (s &optional decimal) "Convert the string S into a Calc number." (math-normalize (cond @@ -3465,7 +3465,8 @@ largest Emacs integer.") (let ((digs (math-match-substring s 1))) (if (and (eq calc-language 'c) (> (length digs) 1) - (eq (aref digs 0) ?0)) + (eq (aref digs 0) ?0) + (null decimal)) (math-read-number (concat "8#" digs)) (if (<= (length digs) (* 2 math-bignum-digit-length)) (string-to-number digs) @@ -3492,8 +3493,8 @@ largest Emacs integer.") (frac (math-match-substring s 2))) (let ((ilen (length int)) (flen (length frac))) - (let ((int (if (> ilen 0) (math-read-number int) 0)) - (frac (if (> flen 0) (math-read-number frac) 0))) + (let ((int (if (> ilen 0) (math-read-number int t) 0)) + (frac (if (> flen 0) (math-read-number frac t) 0))) (and int frac (or (> ilen 0) (> flen 0)) (list 'float (math-add (math-scale-int int flen) frac) @@ -3503,7 +3504,7 @@ largest Emacs integer.") ((string-match "^\\(.*\\)[eE]\\([-+]?[0-9]+\\)$" s) (let ((mant (math-match-substring s 1)) (exp (math-match-substring s 2))) - (let ((mant (if (> (length mant) 0) (math-read-number mant) 1)) + (let ((mant (if (> (length mant) 0) (math-read-number mant t) 1)) (exp (if (<= (length exp) (if (memq (aref exp 0) '(?+ ?-)) 8 7)) (string-to-number exp)))) (and mant exp (Math-realp mant) (> exp -4000000) (< exp 4000000) |