Vous en avez besoin MidpointRounding.AwayFromZerosi vous voulez qu'une valeur de .5 soit arrondie. Malheureusement, ce n'est pas le comportement par défaut pour Math.Round(). Si vous utilisez MidpointRounding.ToEven(valeur par défaut), la valeur est arrondie au nombre pair le plus proche ( 1.5est arrondie à 2, mais 2.5est également arrondie à 2).
est-ce de toute façon d'arrondir 137,5 à 140 pas à 138? Je veux dire arrondir au dixième près?
sam
7
Vous avez besoin Math.Round, non Math.Ceiling. Ceiling"arrondit" toujours vers le haut, tandis que les Roundarrondis vers le haut ou vers le bas selon la valeur après la virgule décimale.
Cela semble toujours suspect. Tout d' abord, la question porte sur l' arrondissement en et d' autre part, quand je l'ai essayé tout à l' heure, l'implémentation par défaut de Math.Round (1,5) tours à 2. Donc , cela peut ne pas être ce qu'il voulait.
ver
De plus, votre exemple mélange la virgule décimale et la virgule décimale. Lequel utilisez-vous normalement (en Suède, je suppose)? :)
ver
oups ... oh ouais, désolé. dans la programmation du point décimal bien sûr, mais dans le texte formel, nous utilisons la virgule décimale. et oui, la suède ^^ à propos de la question, et de la partie "arrondir": je pense que c'est juste une erreur de langage. dans les exemples donnés par op, quelques nombres décimaux arrondis vers le bas.
davogotland
@ver je ne arrondis pas avec Math.Round, je le fais avec un casting. c'est pourquoi cette méthode est manuelle et plutôt mignonne;)
davogotland
5
Vous pouvez utiliser Math.Round comme d'autres l'ont suggéré (recommandé), ou vous pouvez ajouter 0,5 et convertir en un entier (ce qui supprimera la partie décimale).
Je cherchais ceci, mais mon exemple était de prendre un nombre, tel que 4.2769 et de le déposer dans une plage de 4,3. Pas exactement la même chose, mais si cela aide:
Model.Statistics.AverageReview<= it's just a double from the model
Ensuite:
@Model.Statistics.AverageReview.ToString("n1")<=gives me 4.3@Model.Statistics.AverageReview.ToString("n2")<=gives me 4.28
Réponses:
Consultez la documentation officielle pour en savoir plus. Par exemple:
En gros, vous donnez à la
Math.Round
méthode trois paramètres.Exemple de code:
Démo en direct
Vous en avez besoin
MidpointRounding.AwayFromZero
si vous voulez qu'une valeur de .5 soit arrondie. Malheureusement, ce n'est pas le comportement par défaut pourMath.Round()
. Si vous utilisezMidpointRounding.ToEven
(valeur par défaut), la valeur est arrondie au nombre pair le plus proche (1.5
est arrondie à2
, mais2.5
est également arrondie à2
).la source
away from zero
signifie également que-1.5
sera arrondi à-2
.arrondit toujours vers le haut (vers le plafond)
arrondit toujours vers le bas (vers le sol)
ce que vous recherchez est simplement
qui arrondit selon ce post
la source
Vous avez besoin
Math.Round
, nonMath.Ceiling
.Ceiling
"arrondit" toujours vers le haut, tandis que lesRound
arrondis vers le haut ou vers le bas selon la valeur après la virgule décimale.la source
il y a ce manuel, et assez mignon aussi:
ajoutez simplement 0,5 à n'importe quel nombre, et transtypez-le en int (ou plancher) et il sera mathématiquement arrondi correctement: D
la source
Vous pouvez utiliser Math.Round comme d'autres l'ont suggéré (recommandé), ou vous pouvez ajouter 0,5 et convertir en un entier (ce qui supprimera la partie décimale).
la source
Juste un rappel. Méfiez-vous du double.
la source
Vous avez la fonction Math.Round qui fait exactement ce que vous voulez.
la source
1.5
de la valeur? Vous avez besoin de plus de paramètres.cela arrondira au 5 le plus proche ou ne changera pas s'il est déjà divisible par 5
la source
Je cherchais ceci, mais mon exemple était de prendre un nombre, tel que 4.2769 et de le déposer dans une plage de 4,3. Pas exactement la même chose, mais si cela aide:
Ensuite:
etc...
la source
Utilisez
Math.Round
:la source
Cela donnera le résultat:
la source
Si vous travaillez avec des nombres entiers plutôt que des nombres à virgule flottante, voici le chemin.
Ici, "numr" et "denr" sont des entiers non signés.
la source
En utilisant des
Math.Round(number)
arrondis au nombre entier le plus proche.la source
Écrivez votre propre méthode ronde. Quelque chose comme,
function round(x) rx = Math.ceil(x) if (rx - x <= .000001) return int(rx) else return int(x) end
la source
la source