"1 1/2"
print x (where x = "1 1/2"
) と言うと が返されるように、JavaScriptで変換したいと考えています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
OR print1.5
と言うと、そのまま返されます。
さらに工夫しています。ユーザーがその下にある食品の量を提供するテキストフィールドを提供する Ingredient フォームがあります。これは、float、integer、またはfraction のいずれかです。
例えば
- 小さじ1/2の塩
- チリパウダー 小さじ1と1/2
- ガーリックパウダー 小さじ2.5
- クリームスタイルのホースラディッシュ 小さじ2
ユーザーがfloatまたはintegerで値を提供している場合は問題ありませんが、ユーザーが分数で値を提供している場合は、floatに変換しました。
表示ページでは、(ユーザーが入力した) 数量をそのまま表示しても問題ありませんが、内部使用のために分数を float として保持する必要があります。
上記のコードでこれを機能させました。アイデアをありがとう@Rocket