2013-03-28 11 views
9

मुझे फोरट्रान में स्वरूपण विवरणों के आस-पास अपने सिर को लपेटने में कठिनाई हो रही है।फोरट्रान मेरे आउटपुट को तारों में विभाजित करता है - क्यों?

मेरी उत्पादन स्वरूपण बिना, इस मैं क्या है (एक पाश के अंदर है, तो यह कई बार होता है):

write(*,*) t*1E9 

यहाँ treal*8 है।

0.0000000000000000  
0.10000000000000001  
0.20000000000000001  
0.29999999999999999  
0.40000000000000002  
0.50000000000000000  
0.59999999999999998  
0.69999999999999996  
0.79999999999999993  
0.89999999999999991  
0.99999999999999989 

अब, मैं एक प्रारूप बयान को जोड़ने का प्रयास:

write(*, '(F1.2)') t*1E9 

और (सब कुछ एक ही साथ, 0.1 की दर से वृद्धि कुछ गोलाई त्रुटियों के साथ - उत्पादन मैं सिर्फ क्या उम्मीद थी है) के बजाय मैं अपने उत्पादन में केवल तारक मिलती है:

** 
** 
(etc...) 

मैं यह कैसे काम करना चाहिए पर पढ़ने के लिए कोशिश की है, और मैं समझ नहीं क्यों यह हो रहा है। मैंने अंकों के लिए अधिक जगह के साथ प्रारूपों का प्रयास किया है (F15.15 सिर्फ मुझे प्रति पंक्ति अधिक तारांकन देता है), मैंने प्रारूप विवरण को अपनी खुद की लेबल लाइन पर ले जाने की कोशिश की है ... मुझे लगता है कि मैं आउटपुट प्राप्त नहीं कर सकता हूं। पसंद।

मुझे यहां क्या याद आ रही है?

Fw.d, जहां डब्ल्यू वर्णों की संख्या कुल में इस्तेमाल किया जा रहा है, और घ दशमलव बिंदु के बाद वर्णों की संख्या है:

उत्तर

15

फोरट्रान प्रारूप बयान के रूप में परिभाषित कर रहे हैं। यहां आप यह कह रहे हैं कि आपको एक फ्लोट की आवश्यकता है, जो कुल में 1 वर्ण चौड़ा है, और दशमलव बिंदु के बाद 2 वर्ण, जो कुछ स्पष्ट रूप से सही नहीं है। तो प्राप्त करने के लिए, उदाहरण के लिए, एक नाव है कि कुल 4 वर्ण है, 3 दशमलव स्थानों के साथ, आप लिखते हैं:

write(*, '(F4.3)') t*1E9 

इसके अलावा http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap05/format.html

देखें, मुझे लगता है कि तारक कि संकेत कर रहे हैं उल्लेख करना चाहिए संख्या प्रारूप में प्रदर्शित नहीं किया जा सकता है।

संपादित करें:

नीचे जॉर्ज से टिप्पणी में जोड़ना:

प्रतिपादक के लिए

"ई प्रारूप fieldwidth दशमलव की संख्या, जैसे E15.8 से कम से कम 7 अधिक हो गया है के लिए चार। , लीड 0 के लिए दो। एक संभव '-' के लिए एक। मैं आमतौर पर एक और अतिरिक्त जगह जोड़ता हूं ताकि संख्याएं एक साथ नहीं चलें, E16.8 "

+0

धन्यवाद! यह बहुत समझाता है =) हालांकि, यह मेरी मदद नहीं करता है - जब मैं एक ही सिद्धांत लागू करता हूं, हालांकि उदा। 'E5.4', अन्य युगल (यानी 'असली * 8') के लिए, परिमाण 1e-2 - 1e-3 के क्रम के साथ एक स्तंभ और परिमाण 1e2 के क्रम में एक, यह उन स्तंभों के लिए मेड तारांकन देता है (समय कॉलम अपेक्षित के रूप में काम करता है)। इस समय मेरा पूरा प्रारूप स्ट्रिंग: 'एफ 4.2, ई ​​10.8, ई 10.8'। –

+4

ई प्रारूप के लिए फ़ील्डविड्थ decimals की संख्या से कम से कम 7 अधिक होना चाहिए, उदाहरण के लिए E15.8। एक्सपोनेंट के लिए चार, लीड के लिए दो 0. एक संभावित '-' के लिए। मैं आमतौर पर एक और अतिरिक्त जगह जोड़ता हूं इसलिए संख्याएं एक साथ नहीं चलती हैं, E16.8 .. – agentp

+0

यह बताती है - धन्यवाद! –

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