Javascript-将混合分数转换为十进制

Javascript-将混合分数转换为十进制,javascript,type-conversion,decimal,eval,fractions,Javascript,Type Conversion,Decimal,Eval,Fractions,我有一系列配方成分,如“1-1/2”,我需要将其更改为一个适当的数字,如“1.5”,以便根据服务大小进行计算。如何将混合分数更改为十进制数?我见过eval函数,它适用于“1/2”之类的东西,但对于“1-1/2”之类的东西,它的计算结果是“.5” 谢谢你的帮助 注意:添加安全检查(如确保输入中有“-”等) 代码: function toDecimal(_x) { var parts = _x.split("-"); var decParts = parts[1].split("/");

我有一系列配方成分,如“1-1/2”,我需要将其更改为一个适当的数字,如“1.5”,以便根据服务大小进行计算。如何将混合分数更改为十进制数?我见过eval函数,它适用于“1/2”之类的东西,但对于“1-1/2”之类的东西,它的计算结果是“.5”


谢谢你的帮助

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

代码

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));
假设“-”是分隔符,当您使用时,可以得出如下结果:

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