var number = 0.08;
var newNumber = Math.round(number * 4)/4 //round to nearest .25
隨着上面的代碼我可以圓到最接近.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
隨着上面的代碼我可以圓到最接近.25。不過,我只希望它圓滿。由此:數學圓只有季度
0.08 = 0.25
0.22 = 0.25
0.25 = 0.25
0.28 = 0.5
這怎麼可能?
你實際上想要做的是取得輸入的天花板,但不是在整數上運行,而是希望它在宿舍上運行。我們在這裏可以使用的一個技巧是將輸入乘以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