Prévenir les arrondir en Chaîne.format(“%.2f”, doubleValue) en Java
Comment puis-je empêcher String.format("%.2f", doubleValue);
d'arrondi (arrondi au demi algorithme) au lieu de simplement la tronquant?
par exemple
doubleValue = 123.459
après le formatage,
doubleValue = 123.46
J'ai juste envie de jeter le dernier chiffre,
123.45
Je sais qu'il y a d'autres façons de le faire, je veux juste savoir si c'est possible à l'aide de la Chaîne.format.
OriginalL'auteur setzamora | 2009-08-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez toujours régler le mode d'arrondi:
http://java.sun.com/javase/6/docs/api/java/math/RoundingMode.html
et ensuite utiliser des chaînes de caractères.Format()
HALF_EVEN est utilisé par défaut, mais vous pouvez la changer en PLAFOND
un autre pas si flexible approche (mais ce n'est pas ce que vous avez demandé à propos de):
Référence Future, ce qui est faux. Si la décimale degits est ci-dessous 6 ensuite le tour de la moitié est utilisée, l'autre sage HALF_EVEN arrondissement est utilisé. Je trouve cela absurde!
OriginalL'auteur DmitryK
Ressemble la réponse est un gros NON.
http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#dndec
"alors la valeur sera arrondie à l'aide de l'arrondi au demi algorithme"
Je trouve bizarre qu'ils feraient que, depuis NumberFormatter vous permet de définir RoundingMode. Mais comme vous le dites, il y a d'autres façons de le faire. L'évidence la plus simple étant de soustraire .005 de votre valeur première.
OriginalL'auteur andersonbd1
floor
pour les valeurs positives, etceil
pour celles qui sont négatives?OriginalL'auteur Alex Rodrigues
utiliser des chaînes de caractères.format("%.2f", doubleValue - .005)
String.format("%.2f", 1.05 - .005)
résultats dans1.04
, sans doute en raison de virgule flottante inexactitudes.OriginalL'auteur user1716794