diff --git a/pkgs/racket-test-core/tests/racket/number.rktl b/pkgs/racket-test-core/tests/racket/number.rktl index dc50978f9e..57a750d3a1 100644 --- a/pkgs/racket-test-core/tests/racket/number.rktl +++ b/pkgs/racket-test-core/tests/racket/number.rktl @@ -179,6 +179,8 @@ (test "+nan.0" number->string +nan.0) (test "+nan.0" number->string +nan.0) +(test "1589935744527.254" number->string 1589935744527.254) + #reader "maybe-single.rkt" (begin (test (if has-single-flonum? "+inf.f" "+inf.0") number->string +inf.f) diff --git a/racket/src/cs/rumble/number.ss b/racket/src/cs/rumble/number.ss index c63ee90602..7ee27af8ff 100644 --- a/racket/src/cs/rumble/number.ss +++ b/racket/src/cs/rumble/number.ss @@ -393,6 +393,13 @@ result)] [else (cond + [(and (eq? radix 10) + (number? n)) + ;; `number->string` goes through `format` to get to an implementation + ;; like this, so take a shortcut: + (let ([op (#%open-output-string)]) + (#%display n op) + (#%get-output-string op))] [(eq? radix 16) ;; Host generates uppercase letters, Racket generates lowercase (string-downcase (#2%number->string n radix))]