我列出了一系列配方成分,例如“1-1/2”,我需要将其更改为适当的数字,例如“1.5”,以便根据份量进行计算。如何将混合分数更改为十进制数?我见过 eval 函数,它适用于“1/2”之类的东西,但对于“1-1/2”之类的东西,它会将其评估为“.5”。
谢谢你的帮助!
我列出了一系列配方成分,例如“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));
假设“-”是您的分隔符,当您使用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