如何在javascript中将分数转换为浮点?
我想在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
“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;
}
代码还应该考虑整数和浮点值。例如,如果我说print1
或print1.5
,它将按原样返回
我正在详细说明。我有一个配料表,我在其中提供文本字段,用户将在其中提供食物的数量。这可以是浮点、整数或分数
比如说
我用上面的代码得到了这个。感谢@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:检查我的更新时它不工作。