diff options
author | Rich Hickey <richhickey@gmail.com> | 2009-02-09 17:11:59 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2009-02-09 17:11:59 +0000 |
commit | b839feb8acfa87d500c4d1bd273e801429dce8ea (patch) | |
tree | 3beb35c90733e4b655e57e4f0a6ea5ecd9bbae2f | |
parent | e5b8b24e16caf251ec9bcaffdd3b573fd56c4886 (diff) |
fixed Ratio to floating point conversion, patch from jbondeson
-rw-r--r-- | src/jvm/clojure/lang/Ratio.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/Ratio.java b/src/jvm/clojure/lang/Ratio.java index 2ff37d43..6822cb36 100644 --- a/src/jvm/clojure/lang/Ratio.java +++ b/src/jvm/clojure/lang/Ratio.java @@ -13,6 +13,8 @@ package clojure.lang; import java.math.BigInteger; +import java.math.BigDecimal; +import java.math.MathContext; public class Ratio extends Number implements Comparable{ final public BigInteger numerator; @@ -51,7 +53,18 @@ public float floatValue(){ } public double doubleValue(){ - return numerator.doubleValue() / denominator.doubleValue(); + return decimalValue(MathContext.DECIMAL64).doubleValue(); +} + +public BigDecimal decimalValue(){ + return decimalValue(MathContext.UNLIMITED); +} + +public BigDecimal decimalValue(MathContext mc){ + BigDecimal numerator = new BigDecimal(this.numerator); + BigDecimal denominator = new BigDecimal(this.denominator); + + return numerator.divide(denominator, mc); } public int compareTo(Object o){ |