كيف ٪ G يربط أرقام النقاط العائمة؟
-
27-09-2019 - |
سؤال
بينما أستخدم %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" ، ولكن من المحتمل أن تجد ما تبحث عنه في الأقسام اليدوية حول السيطرة على الدقة والطول.