2011-08-18 16 views

Respuesta

14

Uso BigDecimal números y with-precision:

(with-precision 50 (/ 1M 7)) 
=> 0.14285714285714285714285714285714285714285714285714M 
+0

Sí, eso fue bastante sencillo. Me duele hacer tales preguntas. ¡Muchas gracias! –

+0

Observe, incluso con precisión, y BigDecimal se está redondeando en algún punto y los dígitos 142857 simplemente se repiten infinitamente. (ver http://en.wikipedia.org/wiki/Continued_fraction) – klang

+0

Clojure documentos: ['with-precision'] (http://clojuredocs.org/clojure_core/clojure.core/with-precision) –

10

Clojure (y casi todas Lisps) tiene el tipo de relación de esa manera no se pierde precisión. haga todos sus cálculos con la razón y conviértalo en doble/flotante en el último minuto para evitar problemas de precisión.

+0

Sin embargo, tenga cuidado con las proporciones. Por ejemplo, si sigues multiplicando ratios repetidamente, puedes terminar con numeradores y denominadores enormes. Esto puede ser muy lento y puede usar mucha RAM. – Mars

Cuestiones relacionadas