Javascript - 将混合分数转换为小数

时间:2012-10-29 11:00:27

标签: javascript type-conversion decimal eval fractions

我有一系列配方成分列为“1-1 / 2”,我需要更改为正确的数字,如“1.5”,以便根据份量计算。如何将混合分数更改为十进制数?我已经看过eval函数,它适用于像“1/2”这样的东西,但对于像“1-1 / 2”这样的东西,它将它评估为“.5”。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

注意:添加安全检查(例如确保输入中有“ - ”等)

<强>代码

function toDecimal(_x) {
   var parts = _x.split("-");
   var decParts = parts[1].split("/");
   return parseInt(parts[0], 10) + 
             (parseInt(decParts[0], 10) / parseInt(decParts[1], 10));
}
var x = "1-1/2";
console.log(toDecimal(x));

答案 1 :(得分:0)

假设“ - ”是您的分隔符,当您使用fraction.js时,您可能会出现以下内容:

function getDecimal(str) {
    var f, s = str.split("-");

    if (s.length > 1) {
        f = new Fraction(s[0]).add(s[1]);
    } else {
        f = new Fraction(str);
    }
    return f.valueOf();
}
console.log(getDecimal("1-1/2")); // 1.5
console.log(getDecimal("1/2")); // 0.5