如何在javascript中将分数转换为浮点?

如何在javascript中将分数转换为浮点?,javascript,Javascript,我想在JavaScript中转换“1 1/2”,这样当我说print x(其中x=“1 1/2”)时,它返回1.5 当前正在使用以下代码 var value = $('#ingredients-1-quantity').val(); var fraction = Number(value); if(isNaN(fraction)) { if(hasFraction = parseFrac(value)) { $('#ingredients-1-quantity-hidden').val(h

我想在JavaScript中转换
“1 1/2”
,这样当我说print x(其中
x=“1 1/2”
)时,它返回
1.5

当前正在使用以下代码

var value = $('#ingredients-1-quantity').val();
var fraction = Number(value);
if(isNaN(fraction)) {
 if(hasFraction = parseFrac(value)) {
  $('#ingredients-1-quantity-hidden').val(hasFraction);
 }
 else {
  $('#ingredients-1-quantity').val('');
  $('#ingredients-1-quantity-hidden').val('');
 }
}

function parseFrac(frac) {
 frac = frac.split(/ ?(\d+)\/(\d+)/);
 if(!isNaN(parseInt(frac[2])))
   return Math.round(frac[0] * 1 + frac[1] / frac[2], 3);
 else
   return false;
}
代码还应该考虑整数和浮点值。例如,如果我说print
1
或print
1.5
,它将按原样返回

我正在详细说明。我有一个配料表,我在其中提供文本字段,用户将在其中提供食物的数量。这可以是浮点、整数或分数

比如说

  • 1/2茶匙盐
  • 1 1/2茶匙辣椒粉
  • 2.5茶匙大蒜粉
  • 2汤匙奶油辣根
  • 若用户以浮点或整数形式提供值,那个很好,但若用户以分数形式提供值,那个么我已经将其转换为浮点

    在查看页面上,可以按原样显示数量(由用户输入),但对于内部使用,我必须将分数保留为浮动


    我用上面的代码得到了这个。感谢@Rocket的想法

    您可以使用
    eval
    (如果您可以信任字符串的来源)

    或者,您可以在
    /
    上拆分字符串

    var x = '1/2';
    
    var y = x.split('/');
    if(y.length > 1){
        console.log(y[0] / y[1]);
    }
    else{
        console.log(y[0]);
    }
    
    更新:处理混合数字,例如
    1/2
    需要更多的解析。除了在
    /
    上拆分外,我们还需要在空格上拆分

    var x = '1 1/2';
    
    var y = x.split(' ');
    if(y.length > 1){
        var z = y[1].split('/');
        console.log(+y[0] + (z[0] / z[1]));
    }
    else{
        var z = y[0].split('/');
        if(z.length > 1){
            console.log(z[0] / z[1]);
        }
        else{
            console.log(z[0]);
        }
    }​
    

    您可以使用
    eval
    (如果您可以信任字符串的来源)

    或者,您可以在
    /
    上拆分字符串

    var x = '1/2';
    
    var y = x.split('/');
    if(y.length > 1){
        console.log(y[0] / y[1]);
    }
    else{
        console.log(y[0]);
    }
    
    更新:处理混合数字,例如
    1/2
    需要更多的解析。除了在
    /
    上拆分外,我们还需要在空格上拆分

    var x = '1 1/2';
    
    var y = x.split(' ');
    if(y.length > 1){
        var z = y[1].split('/');
        console.log(+y[0] + (z[0] / z[1]));
    }
    else{
        var z = y[0].split('/');
        if(z.length > 1){
            console.log(z[0] / z[1]);
        }
        else{
            console.log(z[0]);
        }
    }​
    

    1/2
    将已转换为
    0.5
    ,您在做什么
    parseFloat()
    应将字符串转换为比
    eval()
    更安全的数字。或者只需乘以1,让JS为您进行类型转换。
    var x=1/2;警报(x);//警报0.5
    这似乎是JS的默认行为,因为类型(如浮点和整数)之间没有严格的区别。我假设您有字符串
    “1/2”
    ?反正没有
    打印
    语句:)
    1/2
    将已转换为
    0.5
    ,您在做什么
    parseFloat()
    应将字符串转换为比
    eval()
    更安全的数字。或者只需乘以1,让JS为您进行类型转换。
    var x=1/2;警报(x);//警报0.5
    这似乎是JS的默认行为,因为类型(如float和integer)之间没有严格的区别。我假设您有字符串
    “1/2”
    ?无论如何没有
    print
    语句:)@Roket:在
    11/2
    @sukhindersingh:检查我的更新时它不工作。@Roket:在
    11/2
    @sukhindersingh:检查我的更新时它不工作。