سؤال
انها كانت فترة طويلة منذ آخر يستخدم د لغة البرمجة, و الآن أنا باستخدام بعض المشاريع التي تنطوي على حسابات علمية.
لدي مجموعة من النقطة العائمة البيانات ، ولكن عند طباعتها باستخدام 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"