Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript: rounding a float UP to nearest .25 (or whatever...)

All answers I can find are rounding to nearest, not up to the value... for example

1.0005 => 1.25  (not 1.00)
1.9   => 2.00
2.10 => 2.25
2.59 => 2.75   etc.

would seem to be pretty basic, but this has me stumped. But this has to round up, not to nearest, which is a relatively easy thing to do.

like image 891
Maniaque Avatar asked Feb 25 '16 21:02

Maniaque


3 Answers

Divide the number by 0.25 (or whatever fraction you want to round nearest to).

Round up to nearest whole number.

Multiply result by 0.25.

Math.ceil(1.0005 / 0.25) * 0.25
// 1.25

Math.ceil(1.9 / 0.25) * 0.25
// 2

// etc.

function toNearest(num, frac) {
  return Math.ceil(num / frac) * frac;
}

var o = document.getElementById("output");

o.innerHTML += "1.0005 => " + toNearest(1.0005, 0.25) + "<br>";
o.innerHTML += "1.9 => " + toNearest(1.9, 0.25) + "<br>";
o.innerHTML += "2.10 => " + toNearest(2.10, 0.25) + "<br>";
o.innerHTML += "2.59 => " + toNearest(2.59, 0.25);
<div id="output"></div>
like image 166
Hatchet Avatar answered Nov 11 '22 22:11

Hatchet


Multiply the number by 4, use Math.ceil on the result and then divide that number by 4.

like image 1
Andrew Ngo Avatar answered Nov 11 '22 22:11

Andrew Ngo


Just multilpy by 4 and take the ceiled value with 4 times.

var values = [1.0005, 1.9, 2.10, 2.59],
    round = values.map(function (a) { return Math.ceil(a * 4) / 4; });

document.write('<pre>' + JSON.stringify(round, 0, 4) + '</pre>');
like image 1
Nina Scholz Avatar answered Nov 11 '22 22:11

Nina Scholz