2009-01-28 6 views
5

En Java, comment arrondir à une valeur arbitraire? Plus précisément, je veux arrondir à 0025 étapes, à savoir:Java: arrondi à des valeurs arbitraires

0,032611 -> 0,0325

0,034143 -> 0,0350

0,035233 -> 0,0350

0,037777 -> 0,0375

...

Des idées ou des libs?

Répondre

19
y = Math.round(x/0.0025) * 0.0025 
+0

J'ai voté, mais je suppose que cette formule ne gère pas le 2ème cas, où le rouding est vers le haut et non vers le bas. –

+1

Merci pour le heads-up. Je l'ai changé pour Math.round(). –

+0

Fonctionne très bien. Merci. – kenoa

2

Vous pouvez le faire:

double step = 0.0025; 
double rounded = ((int)(unrounded/step + 0.5)) * step; 
+0

Je crois en Java que le problème est le même qu'en C++: la conversion en int va tronquer les grandes valeurs doubles en plus petites. 1e300 par exemple deviendra quelque chose autour de 2e9. envisager d'utiliser plafond/plancher pour éviter le même gâchis comme je l'ai fait aujourd'hui en répondant à une question ronde similaire :) –

+0

Ah oui, je comprends maintenant, merci beaucoup! –

Questions connexes