2009-01-28 14 views
5

जावा में, मैं मनमाने ढंग से मूल्य कैसे प्राप्त करूं? विशेष रूप से, मैं .0025 कदम पूर्णांक बनाना चाहते हैं, वह यह है कि:जावा: मनमाना मूल्यों के लिए दौर

0,032611 -> 0,0325

0,034143 -> 0,0350

0,035233 -> 0,0350

0,037777 -> 0,0375

...

कोई विचार या libs?

उत्तर

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

मैं वोट दिया है, लेकिन मुझे लगता है कि इस सूत्र 2 मामले में, जहां rouding ऊपर और नीचे नहीं है संभाल नहीं करता है। –

+1

हेड-अप के लिए धन्यवाद। मैंने इसे Math.round() में बदल दिया है। –

+0

महान काम करता है। धन्यवाद। – kenoa

2

आप ऐसा कर सकता है:

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

मैं जावा में विश्वास करता हूं कि यह उसी समस्या में हो रहा है क्योंकि यह सी ++ में मिलता है: int को कास्टिंग छोटे डबल मानों को छोटे में छोटा कर देगा। उदाहरण के लिए 1e300 लगभग 2e9 बन जाएगा। उसी गड़बड़ी से बचने के लिए छत/मंजिल का उपयोग करने पर विचार करें जैसा मैंने आज किया था, जैसा कि मैंने एक समान दौर प्रश्न का उत्तर दिया था :) –

+0

आह हाँ, अब मैं समझता हूं, बहुत बहुत धन्यवाद! –

संबंधित मुद्दे