diff --git a/pitfall/pitfall/core.rkt b/pitfall/pitfall/core.rkt index 3745107b..bc20bffa 100644 --- a/pitfall/pitfall/core.rkt +++ b/pitfall/pitfall/core.rkt @@ -87,10 +87,20 @@ ;; helpers +(define (round-js-style n) + ;; always round up on 0.5 + ;; contra racket, which rounds toward even on 0.5 + (let* ([n (* n 1e6)] + [r (round n)]) + (/ (if (= .5 (- n r)) + (add1 r) + r) + 1e6))) + (define (numberizer x #:round [round? #true]) (unless (and (number? x) (< -1e21 x 1e21)) (raise-argument-error 'number "valid number" x)) - (let ([x (if round? (/ (round (* x 1e6)) 1e6) x)]) + (let ([x (if round? (round-js-style x) x)]) (number->string (if (integer? x) (inexact->exact x) x))))