2009-01-28 4 views
5

Wie kann ich in Java auf einen beliebigen Wert runden? Insbesondere ich zu 0,0025 Schritte runden möchten, das heißt:Java: Auf beliebige Werte runden

0,032611 -> 0,0325

0,034143 -> 0,0350

0,035233 -> 0,0350

0,037777 -> 0,0375

...

Irgendwelche Ideen oder Bibliotheken?

Antwort

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

Ich habe, aber ich denke, diese Formel nicht den zweiten Fall nicht behandeln, wo der rouding nach oben und nicht nach unten ist. –

+1

Danke für das Heads-Up. Ich habe es in Math.round() geändert. –

+0

Funktioniert gut. Vielen Dank. – kenoa

2

Sie können dies tun:

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

Ich glaube an Java, dass es zu dem gleichen Problem kommt wie es in C++: Casting zu Int wird große doppelte Werte in kleinere schneiden. 1e300 zum Beispiel wird etwas um 2e9. überlege, ob du mit ceil/floor das gleiche Chaos machst, wie ich es heute bei der Beantwortung einer ähnlichen Frage getan habe :) –

+0

Ah ja, ich verstehe jetzt, vielen Dank! –