JavaScript使用四舍五入到最接近的10 [关闭]


73

我想使用JavaScript舍入整数。例如:

10 = 10
11 = 20
19 = 20
24 = 30
25 = 30
29 = 30

30
10可能如何取整20?15,是的;14岁及以下将四舍五入10
大卫说恢复莫妮卡(Monica)2012年

4
另外,您到底尝试了什么?
Oded 2012年

2
建议您将问题改写为“如何将整数四舍五入至最接近的10?”
杰伊·沙利文

我认为您需要Math.ceil()函数,但是正如David所说,我不确定10如何舍入为20。但是,使用上述函数,11可以舍入。
亚当·莱维特

看起来您舍入到最接近的10,但是为什么10会舍入到20?
詹姆斯·海伊2012年

Answers:


150

应该这样做:

Math.ceil(N / 10) * 10;

其中N是您的数字之一。但是,这不适用于您的第一种情况(10舍入为20,但是为什么会这样呢?)。


9
在这种情况下,他可以做到Math.ceil((N+1) / 10) * 10;
杰伊·沙利文

1
Math.ceil返回“大于或等于给定数字的最小整数”。 因此,它适用于所有情况(Math.ceil(10 / 10) * 10 = 10
NayoR

另外,也可以通过简单的数学运算来完成:var result =(remainder = N%10)?N +(10余):N; (其中N是给定的数字,其余部分是初始化为0的临时变量)。
SridharKritha

24

要将数字四舍五入到10的下一个最大倍数,请在数字上加1,然后将除法的Math.ceil除以10。将结果乘以10。

Math.ceil((n + 1)/ 10)* 10;

1->10
2->10
3->10
4->10
5->10
6->10
7->10
8->10
9->10
10->20
11->20
12->20
13->20
14->20
15->20
16->20
17->20
18->20
19->20
20->30
21->30
22->30
23->30
24->30
25->30
26->30
27->30
28->30
29->30
30->40
35-> 40
40-> 50
45-> 50
50-> 60
55-> 60
60-> 70
65-> 70
70-> 80
75-> 80
80-> 90
85-> 90
90-> 100
95-> 100
100-> 110

2
您如何使用负值来完成这项工作?最近的(330,-5)应该是225,此返回值330:/
Frexuz

1
“舍入”到10的下一个最大倍数,所有220-229均为230。
肯尼伯

1
此取整为10到20,因此不适用于10 = 10的情况
TitanFighter

13

Math.round()舍入到最接近的整数。要四舍五入到任何其他数字,请除以10的幂。

一种这样的方法是这样的:

function round(num,pre) {
    if( !pre) pre = 0;
    var pow = Math.pow(10,pre);
    return Math.round(num*pow)/pow;
}

您可以为floor和创建相似的功能ceiling。但是,无论您做什么,10都不会舍入20


1
@trincot感谢您收录错字!:)
Niet the Dark Absol

什么是pre代表在这个例子吗?
MaylorTaylor

这是pre决定性的。
Niet the Dark Absol

我得说,这是一个非常明智的答案。
ohsully

7

或这个

var i = 20;
var yourNumber = (parseInt(i/10, 10)+1)*10;

10 = 10
取整
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.