4

我正在尝试创建图形轴标签——物理文本。我知道如何获取标签并使用 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")会打印出小数,否则只是整个部分?我会首先检查 start、end 或 step 是否包含小数部分,如果是,则打印所有带小数的标签。

4

2 回答 2

7

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

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

给你你要求的行为?我经常"#,##0.####"用于类似的标签。另外,请参阅此问题:在 C# 中使用有效数字格式化数字

于 2010-10-03T00:41:51.587 回答
0

使用自定义格式字符串没有任何问题,但标准的通用数字格式字符串(“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
于 2014-10-13T01:36:29.260 回答