打印重要数字

时间:2010-10-03 00:36:44

标签: c# .net number-formatting

我正在尝试创建图形轴标签 - 物理文本。我知道如何获取标签并使用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")会打印小数,如果它们在那里,否则只是整个部分?我首先检查开始,结束或步骤是否包含小数部分,然后如果是,则打印所有带小数的标签。

2 个答案:

答案 0 :(得分:7)

在此处查看自定义格式字符串:http://msdn.microsoft.com/en-us/library/0c899ak8.aspx 我想我理解你的问题......确实

   current.ToString("#0.#");

告诉你你要求的行为?我经常使用"#,##0.####"来表示类似的标签。 另请参阅此问题:Formatting numbers with significant figures in C#

答案 1 :(得分:0)

使用自定义格式字符串没有任何问题,但standard general numeric format string ("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