سؤال

انها كانت فترة طويلة منذ آخر يستخدم د لغة البرمجة, و الآن أنا باستخدام بعض المشاريع التي تنطوي على حسابات علمية.

لدي مجموعة من النقطة العائمة البيانات ، ولكن عند طباعتها باستخدام writefln, أنا الحصول على نتائج مثل: 4.62593E-172 الذي هو صفر!كيف يمكنني استخدام سلسلة التنسيق % الاشياء لطباعة مثل هذه الأمور 0?

الآن أنا باستخدام الإختراق:

    if( abs(a) < 0.0000001 )
        writefln(0);
    else
        writefln(a);

فإنه لا وظيفة, ولكن أريد أن تفعل ذلك باستخدام تنسيق العمليات ، إذا كان ذلك ممكنا.

التحديث

اقترح شخص ما writefln("%.3f", a) ولكن المشكلة مع ذلك هو أنه يطبع وغني عن الأصفار الزائدة ، أي 0 يصبح 0.000 و 1.2 يصبح 1.200
يمكنني أيضا إزالة زائدة الأصفار ؟ ؟

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

المحلول

الجواب القصير:هذا لا يمكن القيام به مع printf شكل محددات.

منذ D يستخدم نفس التنسيق كما هو C99 vsprintf(), ستجد الإجابة في هذا الموضوع: تجنب زائدة أصفار في printf()

نصائح أخرى

محاولة شيء من هذا القبيل

writefln("%.3f", a);

فيديريكو الجواب أن العمل لمزيد من المعلومات مراجعة شكل محددات القسم.

أرى أنك تستخدم حاليا فوبوس ، ومع ذلك ما كنت تحاول القيام به هو معتمد في التانغو.

Stdout.formatln("{:f2}", 1.2);

طباعة "1.20"

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