diff --git a/Fraction.js b/Fraction.js index c63fb4c..d7a8109 100644 --- a/Fraction.js +++ b/Fraction.js @@ -193,9 +193,14 @@ Fraction.decimalToFraction = function(x) { var decLocation = x.indexOf('.'); if (decLocation != -1) { var whole = x.substring(0, decLocation); + var isNegative = (whole.indexOf('-') != -1)? true: false; var remainder = x.substring(decLocation + 1, x.length); var nthPlace = Math.pow(10, remainder.length); - return Fraction.add(new Fraction(Number(whole), 1), new Fraction(Number(remainder), nthPlace)) + if (isNegative) { + return Fraction.subtract(new Fraction(Number(whole), 1), new Fraction(Number(remainder), nthPlace)) + } else { + return Fraction.add(new Fraction(Number(whole), 1), new Fraction(Number(remainder), nthPlace)) + } } else { return new Fraction(Number(x)); } } diff --git a/Tests.js b/Tests.js index 79adb39..3819735 100644 --- a/Tests.js +++ b/Tests.js @@ -116,6 +116,7 @@ section("Helper Functions -- Advanced", function() { assert(Fraction.decimalToFraction(.25), new Fraction(1,4)); assert(Fraction.decimalToFraction(1.7), new Fraction(17, 10)); assert(Fraction.decimalToFraction(8), new Fraction(8,1)); + assert(Fraction.decimalToFraction(-.5), new Fraction(-1,2)); }); });