[英]Rounding a percentage to the nearest whole number
我有一个自己制作的网格系统,我必须计算一列的每个大小。
每row
适合12
列。 我将在下面给出的每个示例代码中都是这种情况。
在计算网格大小的百分比时,这些数字并不总是整数,主要是:
99.98029427220177
100.01970572779821
100.0146484375
100.009765625
100.01464843750001
100.00976562499999
当我在 javascript 中使用Math.floor
,我得到了这个:
94
96
98
99
98
99
这是我想要的:
100
100
100
100
100
100
所以全部四舍五入到一个整数百分比。
Math.round(x)
——
例子:
Math.round(99.5) == 100
Math.round(99.49) == 99
内置的 JavaScript toFixed() 方法正是您要寻找的:
似乎有一些不同意这个解决方案的酸味编码器。 在这里,我将简要介绍一下:
(99.790980).toFixed() # => "100"
(99.790980).toFixed(1) # => "99.8"
(100.23232).toFixed() # => "100"
(100.23232).toFixed(1) # => "100.2"
大多数时候,这些值被推入DOM
。 在场景下,Number 会使用toString()
进行转换,以便浏览器将其绘制到屏幕上。 这是一个非常简单的Number
内置 API。 不幸的是,编码人员往往会变得非常热心并使用“用于捕鱼的核武器”。
function preciseMathDotRound(value, precision = 0) {
return parseFloat(value.toFixed(precision));
}
// preciseMathDotRound(99.919191) == 100
并真正激怒过度热心的人:
Math.round = preciseMathDotRound; // full send ftw
// Math.round(99.91919191) == 100
// Math.round(99.91919191, 2) == 99.92
这个答案也会破坏 Math.round 十进制精度答案。
旁白:除非您确切地知道自己在做什么,否则永远不要污染任何浏览器提供的 API 原型或类。
快乐的投票! ;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.