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
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.
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.
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.
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.
C'est des devoirs?
Généralement, mod 100, puis si > 50 Ajouter else soustraire.
Selon le commentaire de Pawan Pillai ci-dessus, arrondi au 100e le plus proche en Javascript:100 * Math.floor((foo + 50) / 100);