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")ある場合は小数を出力しますが、そうでない場合は全体だけを出力しますか?最初に、開始、終了、またはステップのいずれかに小数部分が含まれているかどうかを確認し、含まれている場合は、すべてのラベルを小数で印刷します。

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 に答える