From b839feb8acfa87d500c4d1bd273e801429dce8ea Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Mon, 9 Feb 2009 17:11:59 +0000 Subject: fixed Ratio to floating point conversion, patch from jbondeson --- src/jvm/clojure/lang/Ratio.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src') 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){ -- cgit v1.2.3-70-g09d2