var number = 0.08;
var newNumber = Math.round(number * 4)/4 //round to nearest .25
上記のコードでは、最も近い0.25に丸めることができます。しかし、私はそれを丸めるだけです。そこで:数学ラウンドのみの四半期
0.08 = 0.25
0.22 = 0.25
0.25 = 0.25
0.28 = 0.5
これはどのように可能ですか?
var number = 0.08;
var newNumber = Math.round(number * 4)/4 //round to nearest .25
上記のコードでは、最も近い0.25に丸めることができます。しかし、私はそれを丸めるだけです。そこで:数学ラウンドのみの四半期
0.08 = 0.25
0.22 = 0.25
0.25 = 0.25
0.28 = 0.5
これはどのように可能ですか?
あなたが効果的にしたいことは、入力の上限を取ることですが、整数で操作するのではなく、四半期で操作したいと考えています。ここで使用できるトリックの1つは、入力を4で乗算して整数にし、JavaScriptのMath.ceil()
関数に従わせることです。最後に、その結果を4で割って論理的に元の状態に戻します。
使用この式:ここ
Math.ceil(4 * num)/4
デモ:
ユーザー数を切り上げするMath.ceil()
機能。
Math.floor()
- 切り捨てます。
var number = 0.08;
var newNumber = Math.ceil($scope.newAmt * 4)/4 //round to nearest .25
あなたたちMath.ceil()
にしたいことがあります。
ceil()
上方数ラウンドその最も近い整数に。
console.log(Math.ceil(0.08 * 4)/4); // 0.25
console.log(Math.ceil(0.22 * 4)/4); // 0.25
console.log(Math.ceil(0.25 * 4)/4); // 0.25
console.log(Math.ceil(0.28 * 4)/4); // 0.5
ティムBiegeleisenは間違いなく最高の答えを持っていますが、あなたはより「簡単な」アプローチをしたい場合は、基本的には、何か自分自身の関数を書くことができます。
var round = (num) => {
if (num <= 0.25) {
return 0.25;
} else if (num > 0.25 && num <= 0.5) {
return 0.5;
} else if (num > 0.5 && num <= 0.75) {
return 0.75;
} else if (num > 0.75 && num <= 1.0) {
return 1.0;
} else {
return null;
}
};
を
これを呼び出すと、必要な結果が再現されます。
round(0.08); // 0.25
round(0.22); // 0.25
round(0.25); // 0.25
round(0.28); // 0.5
私の名前のスペルが間違っていますが、これはアップヴォートに値する+1 –
謝罪、それを修正:) –
大きな問題は、あなたは、これは常にラウンド、我々はそれを知っているように丸めの標準的な方法に基づきます
Math.round($scope.newAmt * 4)/4
を使用しています。
Math.ceil($scope.newAmt * 4)/4
これは常に丸めます。下り坂の兄弟は
Math.floor()
途中です。
あなたは最大2DPの数字しか扱えませんか? – Toastrackenigma