Arrondi à 100 près

Le premier nombre doit être arrondi au deuxième nombre le plus proche. Il y a plusieurs façons de le faire, mais quel est l'algorithme le meilleur et le plus court? N'importe qui pour un défi : -)

1244->1200
1254->1300
123->100
178->200
1576->1600
1449->1400
123456->123500
654321->654300
23->00
83->100

21
demandé sur Senthoor 2009-02-25 09:29:18

7 réponses

Pour l'entrée n:

(n + 50) / 100 * 100

En utilisant la division entière.

Notez que de nombreuses langues / bibliothèques ont déjà des fonctions pour le faire.

29
répondu David Z 2009-02-25 06:31:20

La méthode ronde de Ruby peut consommer des précisions négatives:

n.round(-2)

Dans ce cas, -2 vous permet d'arrondir à la centaine la plus proche.

52
répondu ktusznio 2017-04-26 19:18:15
100 * round(n/100.0)
6
répondu Nikhil Chelliah 2009-02-25 20:52:55

Je sais qu'il est tard dans le jeu, mais voici quelque chose que j'ai généralement mis en place quand je dois arrondir les choses au nième le plus proche:

Number.prototype.roundTo = function(nTo) {
    nTo = nTo || 10;
    return Math.round(this * (1 / nTo) ) * nTo;
}
console.log("roundto ", (925.50).roundTo(100));

Number.prototype.ceilTo = function(nTo) {
    nTo = nTo || 10;
    return Math.ceil(this * (1 / nTo) ) * nTo;
}
console.log("ceilTo ", (925.50).ceilTo(100));

Number.prototype.floorTo = function(nTo) {
    nTo = nTo || 10;
    return Math.floor(this * (1 / nTo) ) * nTo;
}
console.log("floorTo ", (925.50).floorTo(100));

Je me trouve en utilisant le numéro.ceilTo(..) parce que je travaille avec Canvas et essaie de sortir pour déterminer à quelle distance à l'échelle.

4
répondu Timothy Petrakis 2012-05-27 01:56:09

Cela le fera, étant donné que vous utilisez des mathématiques entières:

n = (n + 50) / 100 * 100

Bien sûr, vous n'avez pas spécifié le comportement de par exemple, 1350 et 1450, donc j'ai choisi de rassembler. Si vous avez besoin de rond-à-même, cela ne fonctionnera pas.

2
répondu derobert 2009-02-25 06:32:10

C'est des devoirs?

Généralement, mod 100, puis si > 50 Ajouter else soustraire.

0
répondu Brian 2009-02-25 06:30:58

Selon le commentaire de Pawan Pillai ci-dessus, arrondi au 100e le plus proche en Javascript:
100 * Math.floor((foo + 50) / 100);

0
répondu Jghorton14 2018-03-05 17:29:20