سؤال

أحاول إنشاء ملصقات محور الرسم البياني - النص الفعلي. أعرف كيفية الحصول على الملصقات وطباعتها باستخدام 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top