0

「452」を表示するには、「1.2452」のような数値をフォーマットする必要があるため、すべての数値を表示したくありません。問題は、表示番号を直接制御することはできず、NumberFormatInfo クラスに従って型の書式文字列を設定することによってのみ書式設定できることです。これは可能ですか?

乾杯

編集:

「FormatEvent」にサブスクライブできることがわかりました。これにより、数値のフォーマット後にカスタムフォーマットを文字列として作成できるようになりました。助けと洞察をありがとう!:)

4

5 に答える 5

2

IFormatter を実装することで、独自の書式指定子を作成できます。ただし、既に .NET に焼き付けられている型についてはそうすることができません。System.Double や System.Decimal のように、または値が 1.2452 である変数の型が何であれ。これらの標準の .NET 型に組み込まれている書式指定子では、最後の 3 桁を選択することはできません。

NumberFormatInfo が変更されたカスタム カルチャでは、書式設定を十分に制御できません。

実際の値を制御する必要があります。それなら簡単です。

于 2010-09-29T14:07:28.590 に答える
0

.net の使用

[math]::pi                             *-- give 3.1415926538979*
([math]::pi).tostring().split(".")[1]  *-- gives: 14159265358979*
([math]::pi).tostring().split(".")[1].substring(0,4) *-- Gives : 1415*
于 2010-09-29T15:55:11.133 に答える
0

数値をフォーマットするために必要なアルゴリズムを正確に知る必要があると思います。ただし、それを文字列に変換してから、部分文字列を実行するだけです。

于 2010-09-29T14:02:40.167 に答える
0

NumberFormatInfo は、この (奇妙な) 形式に対応するのに十分な柔軟性を提供しません。それに応じて数値をフォーマットする ReadOnly プロパティを持つことをお勧めします...

public string NumberFormatted
{
    get
    {
        string num = YourNumber.ToString();
        int index = num.IndexOf(".");
        if(index > -1 && index < num.Length - 2)
            num = num.Substring(index + 2);
        return num;
     }
}
于 2010-09-29T16:03:27.547 に答える
0

最も重要でないものから最も重要なものまでしか除外できないため、それは不可能だと確信しています。

于 2010-09-29T13:46:11.240 に答える