2013-07-10 12 views
5

जावा में, मैं निम्नलिखित कोड है: निश्चित-चौड़ाई चल बिन्दु संख्या स्वरूप

System.out.printf("%05.5f", myFloat); 

यह किसी भी संख्या जो 10 से कम हैं के लिए अच्छी तरह से काम करता है, लेकिन किसी भी संख्या 10 या अधिक से अधिक, दशमलव स्थानों के लिए 5 तक छंटनी की जाती है, लेकिन यह इस तथ्य की क्षतिपूर्ति नहीं करती है कि दशमलव बिंदु से पहले की संख्या अधिक है।

12.3456 
1.23456 

(यानी, अंकों की एक ही नंबर), या:

12.34567 
2.34567 

(यानी, रिक्त स्थान के साथ पैड ताकि दशमलव अंक और पिछले मैं निम्न में से एक करना चाहते हैं अंक लाइन अप)।

अगर मैं काम करने के लिए या तो दोनों खुश रहूंगा तो मैं खुश रहूंगा (दोनों बेहतर होंगे!)।

कोई विचार? धन्यवाद!

+0

या तो काम करेगा। – joshlf

+1

क्या आपको पता है कि अधिकतम चौड़ाई आपको चाहिए? यदि ऐसा है, तो बस 5 की बजाय चौड़ाई के रूप में इसका उपयोग करें। –

+0

आपका मतलब "% 05f" जैसा है? यदि ऐसा है, तो यह काम नहीं करता है। मुझे मिलता है: '29.979748' और फिर' 7.449038' (दशमलव बिंदु के बाद अंकों की संख्या, लेकिन कोई प्रमुख रिक्त स्थान या 0)। – joshlf

उत्तर

7

मैं पता लगा है कि कैसे यह करने के लिए प्राप्त करने के लिए:

12.34567 
2.34567 

को देखते हुए "%x.yf" की तरह एक प्रारूप स्ट्रिंग, यह न्यूनतम चौड़ाई x साथ स्वरूपित जाएगा, और बाद दशमलव सूत्री परिशुद्धता y। चूंकि पूर्व-दशमलव बिंदु अंक और दशमलव बिंदु स्वयं न्यूनतम चौड़ाई (x) की ओर गिनती है, इसलिए चौड़ाई परिशुद्धता से कम से कम दो बड़ी होनी चाहिए। विशेष रूप से, यदि कोई संख्या मुद्रित होती है जो न्यूनतम चौड़ाई से अधिक व्यापक होती है, तो यह आसन्न रेखाओं के साथ अच्छी तरह से लाइन नहीं होगी क्योंकि उन पंक्तियों को कम किया जाएगा। उदाहरण के लिए, हम 3 की चौड़ाई और 1 के एक परिशुद्धता के साथ मुद्रण 10.1 और फिर 1.1 प्रयास करते हैं, हम मिल जाएगा:

10.1 
1.1 

हालांकि, अगर हम 4 की चौड़ाई का उपयोग करें, 1.1 गद्देदार हो जाएगा क्योंकि यह नहीं है न्यूनतम चौड़ाई:

10.1 
1.1 
+0

... और अब आप टेड होप की टिप्पणी को समझ सकते हैं :) –

+0

जो मैं करता हूं:) ... – joshlf

+0

मैं इसे काम करने के लिए नहीं मिला था, जिस तरह से मैं चाहता था उस नंबर को पैडिंग नहीं कर रहा था। मैं दो स्ट्रिंग.फॉर्मैट कॉल स्ट्रिंग.फॉर्मैट ("%%% 5s", स्ट्रिंग.फॉर्मैट ("% 2.2f", संख्या) का उपयोग करके समाप्त हो गया था, जिस प्रारूप को मैं उम्मीद कर रहा था उसे प्राप्त करने के लिए। – SnellyBigoda

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