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