舍入到最近的.25 javascript

dot*_*tty 26 javascript rounding

我想将所有数字转换为最接近的.25

所以...

5 becomes 5.00
2.25 becomes 2.25
4 becomes 4.00
3.5 becomes 3.50
Run Code Online (Sandbox Code Playgroud)

谢谢

Gum*_*mbo 91

这是rslite所说的实现:

var number = 5.12345;
number = (Math.round(number * 4) / 4).toFixed(2);
Run Code Online (Sandbox Code Playgroud)

  • @Fedearne:这是一个算术问题,而不是语言问题. (4认同)
  • 我提出,它会为任意的小数(例如0.25或0.3),而不是/ 4 ...`函数roundFloat(值,toNearest,固定){返回(Math.ceil(值/ toNearest)*toNearest).toFixed的函数(固定); }` (4认同)
  • 余由[codepen演示](http://codepen.io/plong0/pen/NrrRdp?editors=1111)与使用该技术四舍五入浮子和舍入的整数玩 (2认同)

rsl*_*ite 65

乘以4,舍入为整数,除以4,格式为两位小数.

编辑 downvotes的任何理由?至少留下评论,知道应该改进什么.

  • 也许你被投票了,因为你没有为他完成所有的工作? (38认同)
  • 为什么这被贬低了?毕竟,这是正确的答案. (2认同)

Phr*_*ogz 12

如果您关心速度,请注意使用以下方法可以提高30%的速度:

var nearest = 4;
var rounded = number + nearest/2 - (number+nearest/2) % nearest;
Run Code Online (Sandbox Code Playgroud)

从我的网站:http
://phrogz.net/round-to-nearest-via-modulus-division这里的性能测试:http://jsperf.com/round-to-nearest


cjb*_*rth 9

这是一个进行舍入的通用函数.在上面的例子中,使用了4,因为它与.25相反.此功能允许用户忽略该细节.它目前不支持预设精度,但可以轻松添加.

function roundToNearest(numToRound, numToRoundTo) {
    numToRoundTo = 1 / (numToRoundTo);

    return Math.round(numToRound * numToRoundTo) / numToRoundTo;
}
Run Code Online (Sandbox Code Playgroud)


cos*_*tew 6

这是@Gumbo 以函数形式给出的答案:

var roundNearQtr = function(number) {
  return (Math.round(number * 4) / 4).toFixed(2);
};
Run Code Online (Sandbox Code Playgroud)

您现在可以拨打电话:

roundNearQtr(5.12345); // 5.00
roundNearQtr(3.23); // 3.25
roundNearQtr(3.13); // 3.25
roundNearQtr(3.1247); // 3.00
Run Code Online (Sandbox Code Playgroud)