如何将“1 1/4”转换为 1.25?
我想接受用户输入并将其转换为等效的逻辑数字。我说是合乎逻辑的,因为 2 R 和 R 2 需要为 2(与测量脊椎按摩调整有关)。一切正常,直到他们需要能够使用混合分数。
有这方面的图书馆吗?
唯一不起作用的数字是“1 1/4”,它错误地转换为“2.75”。
// Sample input
var values = ["2.5", "1 1/4", "1/4", "2 R", "R 2"];
function l(msg) {
console.log(msg)
}
function toDecimal(x) {
if (x.indexOf('/') != -1) {
var parts = x.split(" ")
var decParts = parts[1].split("/")
return parseInt(parts[0], 10) + (parseInt(decParts[0], 10) / parseInt(decParts[1], 10))
} else {
return x
}
}
function total_it_up(values){
var total = 0,
value = 0
if(values === undefined)
return 0
$.each(values, function(index, value){
value = value.replace(/[^0-9./]+/g, "")
value = eval(value)
l(value)
total += parseFloat(value)
})
return total
}
解决方案
function toDecimal(x) {
if (x.indexOf('/') != -1) {
var parts = x.split(" ")
var decParts;
if (parts.length > 1) {
decParts = parts[1].split("/");
}
else {
decParts = parts[0].split("/");
parts[0] = 0;
}
return parseInt(parts[0], 10) + (parseInt(decParts[0], 10) / parseInt(decParts[1], 10))
} else {
return x
}
}
function total_it_up(values){
var total = 0;
if(values === undefined)
return 0;
$.each(values, function(index, value){
total += parseFloat(toDecimal($.trim(value.replace(/[^0-9./ ]+/g, ""))));
})
return total;
}