50 から始まり 190 で終わる数字があります。ステップは常に 20 です -->
50, 70, 90, .... 190
今、これに従って四捨五入する必要があるテキスト フィールドから数値を取得します。もし 55 なら 70 になり、77 なら 90 になるはずです。もし 90 ならもちろん 90 のままです。
// 55 --> 60
number = Math.ceil(number / 10) * 10
20 のステップを使用して取得した数値を丸める方法は?
ありがとう!
50 から始まり 190 で終わる数字があります。ステップは常に 20 です -->
50, 70, 90, .... 190
今、これに従って四捨五入する必要があるテキスト フィールドから数値を取得します。もし 55 なら 70 になり、77 なら 90 になるはずです。もし 90 ならもちろん 90 のままです。
// 55 --> 60
number = Math.ceil(number / 10) * 10
20 のステップを使用して取得した数値を丸める方法は?
ありがとう!
オフセットを使用して、x の増分で丸めたい場合:
function round(number, increment, offset) {
return Math.ceil((number - offset) / increment ) * increment + offset;
}
round(51, 20, 10) // 70
round(70, 20, 10) // 70
round(99, 20, 10) // 110
round(100, 20, 10) // 110
function round(number,x,o) {
o = ~~(o);
return o + Math.ceil((number - o)/ x ) * x
}
console.log(round (55,20,10)) //70
console.log(round (77,20,10)) //90
console.log(round (90,20,10)) //90
それを指摘する@Cerbrus thx
たぶん、そのようなもので
number = Math.ceil( (number - 50) / 20 ) * 20 + 50;
var number;
var a =number-10-((number-10)%20);
var result=a+30;
// does not work if num is 70 or 90 so
if(result-20==number)
Result=number;
またはワンライナーとして:
var result=number+20-((number-10)%20) - result-20==number : 0 ? 20;
ロジックは、最初に数値に 20 を追加するというものです。77 という数字を考えてみましょう。77+20=97 です。しかし、77+20-7=90 です。そして、7 は 77 と 70 の差で、以前の有効な数です。(number-10)%20 で差を求めることができます。ただし、番号が最初からOKの場合は機能しないため、最後のロジックになります。