2010-01-29 18 views
5

मुझे वैज्ञानिक नोटेशन में संख्याओं को आउटपुट करने की आवश्यकता है जैसे कि दशमलव बिंदु से पहले हमेशा "0" होता है।प्रारूपण आउटपुट

उदा। संख्या x = 134.87546 के लिए, मुझे आउटपुट 0.134875E03 नहीं 1.348755E02

क्या कोई यह जानता है कि यह कैसे करें?

अग्रिम में धन्यवाद - शिरज़।

उत्तर

0
int exponent = floor(log10(num)) + 1; 

फिर बस "0." प्रिंट करें, दशमलव के बिना संख्या, "ई", फिर एक्सपोनेंट।

+0

सी मानक पुस्तकालय में, लॉग लॉग() प्राकृतिक लॉग है। आप 'लॉग 10() 'चाहते हैं। – Amber

+0

इसके अलावा, 'छत (लॉग 10 (संख्या))' 1' वापस लौटाएगी, यदि इनपुट '10' है, और' 10' '10' के साथ संयोजित' 0.' है, जो '10^1' से गुणा किया जाता है '1.0' जो' 10' के बराबर नहीं है। आप वास्तव में मंजिल चाहते हैं, प्लस 1. – Amber

+0

@Dav, आह, धन्यवाद। मैंने लंबे समय तक stdmath का उपयोग नहीं किया है इसलिए मैंने टिप्पणी को जोड़ा कि मेरा मतलब लॉग 10 था। साथ ही, मैंने उस मामले पर विचार नहीं किया जहां 10 की शक्ति लॉग 10 के लिए पूर्णांक हैं, और आप सही हैं। – strager

3
int exp = (int)log10(input)+1; 
double shifted = input/pow(10.0, exp); 
printf("%fE%d", shifted, exp); 
0

आप Boost Format library का उपयोग करके जांच कर सकते हैं जो एक सामान्य आउटपुट स्वरूपण लाइब्रेरी है।

+1

मैं काफी हद तक निश्चित हूं कि निश्चित/वैज्ञानिक मैनिपुलेटर्स वास्तव में दशमलव बिंदु से पहले शून्य होने के कारण उत्पादन नहीं कर सकते हैं - वे मानक नोटेशन के लिए डिज़ाइन किए गए हैं जो दशमलव से पहले एक अंक (शून्य नहीं) है। – Amber

+0

@ डेव ओउप्स ... मैंने सोचा था कि मैनिपुलेटर्स ने कैसा व्यवहार किया था। हटा दिया गया कि मेरे उत्तर से (और आपकी टिप्पणी को वोट दिया;) – Yukiko

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