मेरे पास फ्लोट की एक सरणी है जहां डेटा अलग-अलग दशमलव बिंदुओं के साथ संग्रहीत किया जाता है, इसलिए कुछ 123.40000
, 123.45000
, 123.45600
... अब अगर मैं इन मानों को 0s के बिना स्ट्रिंग में प्रिंट करना चाहता हूं printf()
में अंत ताकि वे 123.4
, 123.45
, 123.456
, अंत में उन 0 के बिना हैं। क्या यह संभव है? यदि हां, तो कैसे?printf में फ़्लोटिंग पॉइंट स्वरूपण()
उत्तर
% छ फ़ॉर्मेटर का उपयोग करें:
printf("%g", 123.4000);
प्रिंट
123,4
पीछे चल शून्य निकाल दिए जाते हैं, लेकिन दुर्भाग्य से इतना अनुगामी दशमलव बिंदु है अगर आंशिक हिस्सा शून्य है। अगर वहाँ वास्तव में आपके द्वारा सीधे तौर printf() का उपयोग कर करना चाहते करने के लिए किसी भी तरह है मैं नहीं जानता कि - मुझे लगता है कि कुछ इस तरह शायद आपका सर्वश्रेष्ठ दांव है:% छ
#include <stdio.h>
#include <math.h>
void print(FILE * f, double d) {
if (d - floor(d) == 0.0) {
fprintf(f, "%g.", d);
}
else {
fprintf(f, "%g", d);
}
}
int main() {
print(stdout, 12.0);
print(stdout, 12.300);
}
उपयोग -
प्रिंट सामान्य या घातीय नोटेशन में दोगुना, जो भी इसकी परिमाण के लिए अधिक उपयुक्त है। 'जी' लोअर केस अक्षरों का उपयोग करता है, 'जी' ऊपरी-केस अक्षरों का उपयोग करता है। इस प्रकार के दशमलव बिंदु के दाईं ओर उस महत्वहीन शून्य में निश्चित-बिंदु नोटेशन से थोड़ा अलग है। साथ ही, दशमलव बिंदु पूरी संख्या में शामिल नहीं है।
बस एक छोटी सी क्वेरी, अगर मैं पिछली शून्य को हटाना चाहता हूं लेकिन दशमलव को पूरी संख्या में रखना चाहता हूं, जैसे 124.00000 123 है। – sfactor
मैं नहीं जानता कि यह कैसे hacky है, लेकिन:
float f = 124.000;
if (f == (int) f) {
printf("%.1f\n", f); /* .1 can be changed */
} else {
printf("%g\n", f);
}
रिटर्न 124.0
।
float f = 124.123000;
if (f == (int) f) {
printf("%.1f\n", f); /* .1 can be changed */
} else {
printf("%g\n", f);
}
124.123
देता है।
एक (बड़े पर्याप्त) बफर पर प्रिंट करें। बफर प्रिंट करें ... और यदि बफर में कोई '.'
कोई डॉट प्रिंट नहीं है।
char buf[100];
sprintf(buf, "%g", val);
printf("%s", buf);
if (strchr(buf, '.') == NULL) putchar('.');
संपादित
स्टैंडर्ड को निर्दिष्ट #
झंडा:
# परिणाम एक `` वैकल्पिक रूप 'में बदल जाती है। [...] ए, ए, ई, ई, एफ, एफ, जी, और जी रूपांतरण, फ्लोटिंग-पॉइंट संख्या को परिवर्तित करने का नतीजा हमेशा दशमलव-बिंदु वर्ण होता है, भले ही कोई अंक का पालन न करे । [...] जी और जी रूपांतरणों के लिए, परिणाम पीछे परिणाम से हटाया नहीं गया है। [...]
... लेकिन आप अनुगामी शून्य :(
- 1. स्फिंक्स फ़्लोटिंग पॉइंट स्वरूपण
- 2. गलत फ़्लोटिंग पॉइंट व्यवहार
- 3. एक फ़्लोटिंग पॉइंट प्रकार
- 4. फ़्लोटिंग पॉइंट यूनिट
- 5. कच्चे फ़्लोटिंग पॉइंट एन्कोडिंग
- 6. फ़्लोटिंग पॉइंट नंबर प्रारूप
- 7. printf और स्वरूपण नियम
- 8. एक अन्य फ़्लोटिंग पॉइंट प्रश्न
- 9. निर्धारक फ़्लोटिंग पॉइंट और .NET
- 10. MySQL फ़्लोटिंग पॉइंट तुलना मुद्दों
- 11. फ़्लोटिंग पॉइंट समस्याओं को समझना
- 12. फ़्लोटिंग पॉइंट रूपांतरण और प्रदर्शन
- 13. फ़्लोटिंग पॉइंट अपवाद (कोर डंप
- 14. असेंबली डिवीजन और फ़्लोटिंग पॉइंट
- 15. फ़्लोटिंग-पॉइंट की तुलना 0
- 16. पाइथन सरणी में फ़्लोटिंग पॉइंट परिशुद्धता
- 17. x86 असेंबलर: फ़्लोटिंग पॉइंट की तुलना
- 18. प्रिंटफ फ़्लोटिंग पॉइंट मानों के लिए स्ट्रिंग प्रारूप
- 19. फ़्लोटिंग पॉइंट घटक नहीं है तो केवल दशमलव बिंदु दिखाएं .00 sprintf/printf
- 20. 80-बिट फ़्लोटिंग पॉइंट और असामान्य संख्या
- 21. फ़्लोटिंग पॉइंट नंबर - निकटतम संख्या 1.7
- 22. जीसीसी संकलन-समय फ़्लोटिंग पॉइंट अनुकूलन
- 23. निरंतर असाइनमेंट की फ़्लोटिंग-पॉइंट तुलना
- 24. फ़्लोटिंग पॉइंट जोड़ और गुणात्मक सहयोगी है?
- 25. फ्लोटिंग पॉइंट तुलना में समस्याएं
- 26. फ़्लोटिंग पॉइंट त्रुटि -1 क्या है। # जे मतलब है?
- 27. मैं पर्ल में फ़्लोटिंग पॉइंट परिशुद्धता कैसे सेट करूं?
- 28. क्रोम में अजीब सीमा-चौड़ाई व्यवहार - फ़्लोटिंग पॉइंट सीमा-चौड़ाई?
- 29. स्मृति में फ़्लोटिंग पॉइंट नंबर कैसे संग्रहीत किए जाते हैं?
- 30. समूहों में फ़्लोटिंग-पॉइंट नंबरों की सॉर्ट सूची
एक बुरा विचार युगल? तुलना करने के लिए है ना मिल "अगर (घ मंजिल (घ) == 0.0)" ? – himself
@ खुद नहीं, यह ठीक है जब आप जानते हैं कि आप क्या कर रहे हैं। "कभी भी '=='' के लिए फ़्लोटिंग-पॉइंट नंबरों की तुलना न करें, अत्याधुनिक के लिए केवल अनुमान है। –