summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-02-09 17:11:59 +0000
committerRich Hickey <richhickey@gmail.com>2009-02-09 17:11:59 +0000
commitb839feb8acfa87d500c4d1bd273e801429dce8ea (patch)
tree3beb35c90733e4b655e57e4f0a6ea5ecd9bbae2f /src
parente5b8b24e16caf251ec9bcaffdd3b573fd56c4886 (diff)
fixed Ratio to floating point conversion, patch from jbondeson
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/Ratio.java15
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){