繁体   English   中英

将百分比四舍五入到最接近的整数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM