में मैं C Primer Plus किताब पढ़ रही है और यह उदाहरणलांग डबल सी
#include <stdio.h>
int main(void)
{
float aboat = 32000.0;
double abet = 2.14e9;
long double dip = 5.32e-5;
printf("%f can be written %e\n", aboat, aboat);
printf("%f can be written %e\n", abet, abet);
printf("%f can be written %e\n", dip, dip);
return 0;
}
गया के बाद मैं अपने मैकबुक पर इस भाग गया मैं उत्पादन पर काफी झटका लगा है:
32000.000000 can be written 3.200000e+04
2140000000.000000 can be written 2.140000e+09
2140000000.000000 can be written 2.140000e+09
तो मैंने गोल देखा और पाया कि लंबे समय तक प्रदर्शित करने के लिए सही प्रारूप %Lf
का उपयोग करना है। हालांकि मैं अभी भी नहीं समझ सकता कारण है कि मैं बजाय मैं क्या हो गया, जब मैं Cygwin, उबंटू और iDeneb जो मोटे तौर पर
-1950228512509697486020297654959439872418023994430148306244153100897726713609
013030397828640261329800797420159101801613476402327600937901161313172717568.0
00000 can be written 2.725000e+02
कोई भी विचार है पर यह भाग गया के दोहरे abet
मूल्य है?
क्या आप वाकई कि कोड केवल एक था कर रहे हैं? मैंने बस इसे अपने मैकबुक - मैकोज़ एक्स 10.5.8 (जीसीसी 4.0.1) पर चलाया और अपना साइगविन परिणाम प्राप्त किया। –
हां मैंने अभी इसे फिर से जांच लिया है। Btw मैं MacOS एक्स 10.6.2 (जीसीसी 4.2.1) चल रहा हूँ – reubensammut
असल में मैं मैक पर उम्मीद अतर्कसंगत जवाब मिलता है। पेचीदा। मेरे निष्पादन योग्य पर 'otool -L' चलाना मुझे बताता है कि यह /usr/lib/libSystem.B.dylib संस्करण 111.1.4 के विरुद्ध चल रहा है; वह पुस्तकालय है जो 'printf' प्रदान करता है। यदि आपके पास उस लाइब्रेरी का एक ही संस्करण है, तो आपको वही जवाब मिलना चाहिए। –