「11/4」を1.25に変換するにはどうすればよいですか?
ユーザー入力を取得して、同等の論理数値に変換したいと思います。2RとR2は2である必要があるため、論理的と言います(カイロプラクティック調整の測定と関係があります)。混合分数を使用できるようになるまで、すべてが機能しました。
このためのライブラリはありますか?
動作しない唯一の数値は「11/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;
}