سؤال

بينما أستخدم %g كحديد تنسيق في printf(), ، في بعض الأحيان ، يربط ما يصل إلى مكانين بعد النقطة العشرية ، وأحيانًا تصل إلى 3 أماكن ، حتى 4 أماكن تصل إلى 4 أماكن ... كيف يفعل ذلك؟

في الواقع حيث يجب أن نستخدم %g بدلاً من %f أو %e لأرقام النقاط العائمة؟

هل كانت مفيدة؟

المحلول

ال %g يقوم محدد التنسيق بعمله تمامًا مثل %f ستفعل ، ولكن إذا %f سوف يؤدي في 4.234000, ، من ثم %g سوف يحذف الأصفار الزائدة والطباعة 4.234.

%g يجب استخدامه عندما يكون أكثر منطقية في تنسيق الإخراج الخاص بك أن يتم طباعة بعض الأرقام على أنها 12345.6, ، في حين سيتم طباعة عدد أكبر قليلاً 1.235e04.

نصائح أخرى

%g "تقلب" تلقائيًا بين الاستخدام %e و %f اعتمادًا على القيمة ، في محاولة لعرض أكبر قدر ممكن من المعلومات ، بنفس الطريقة التي تفعل بها الآلات الحاسبة باليد. أيضا مع %g لا يتم تضمين الأصفار الزمنية والنقطة العشرية.

ل %f التحويل ، "الدقة" هو عدد الأرقام بعد النقطة العشرية, ، أما بالنسبة لل %g إنه عدد كبير الأرقام.
الدقة الافتراضية هي 6 في كلتا الحالتين.

من دليل printf:

"يتم تحويل الوسيطة المزدوجة في النمط F أو E (أو F أو E لتحويلات G). الدقة تحدد عدد الأرقام المهمة. إذا كانت الدقة مفقودة ، يتم إعطاء 6 أرقام ؛ إذا كانت الدقة صفرًا ، فسيتم علاجها كما هو الحال 1. يتم استخدام النمط E إذا كان الأسس من تحويله أقل من -4 أو أكبر من أو مساو رقم واحد على الأقل. "

لا أقصد "RTFM" ، ولكن من المحتمل أن تجد ما تبحث عنه في الأقسام اليدوية حول السيطرة على الدقة والطول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top