طباعة أرقام كبيرة
-
27-09-2019 - |
سؤال
أحاول إنشاء ملصقات محور الرسم البياني - النص الفعلي. أعرف كيفية الحصول على الملصقات وطباعتها باستخدام GDI ، لكن الخوارزمية الخاصة بي لا تقوم بعمل رائع في الطباعة بخطوات كسرية.
لطباعة الملصقات ، أحصل حاليًا على الملصق الأول ثم أضف خطوة إلى كل تسمية التالية:
public static void PrintLabels(double start, double end, double step);
{
double current = start;
while (current <= end)
{
gfx.DrawString(current.ToString(),...);
current += step;
}
}
هل يوجد number.ToString("something")
هذا سوف يطبع العشرية إذا كانوا هناك ، وإلا فقط الجزء بأكمله؟ سأقوم أولاً بالتحقق مما إذا كان إما البدء أو النهاية أو الخطوة تحتوي على جزء كسري ، ثم إذا كانت الإجابة بنعم ، فقم بطباعة جميع الملصقات مع عشري.
المحلول
انظر سلاسل التنسيق المخصص هنا:http://msdn.microsoft.com/en-us/library/0c8999.aspxأعتقد أنني أفهم سؤالك ... هل
current.ToString("#0.#");
يعطيك السلوك الذي تطلبه؟ كثيرا ما أستخدم "#,##0.####"
لتسميات مماثلة. أيضا ، انظر هذا السؤال: تنسيق أرقام مع أرقام مهمة في C#
نصائح أخرى
لا حرج في استخدام سلسلة تنسيق مخصصة ، ولكن سلسلة تنسيق رقمية عامة قياسية ("G") سأعمل بشكل جيد في هذه الحالة أيضًا حيث تم تذكيرني مؤخرًا:
current.ToString("G");
فيما يلي مثال سريع ومكتفي ذاتيًا يتجول في أساليب السلسلة المخصصة والقياسية ...
double foo = 3.0;
double bar = 3.5;
// first with custom format strings
Console.WriteLine(foo.ToString("#0.#"));
Console.WriteLine(bar.ToString("#0.#"));
// now with standard format strings
Console.WriteLine(foo.ToString("G"));
Console.WriteLine(bar.ToString("G"));
...، الذي يحصد:
3
3.5
3
3.5