1

お金としてデータベースに保存された2つの異なるフィールドがあります:残高と金額。ただし、これらを mvc ビューに表示しようとすると、残高はすでに 2DP に丸められていますが、金額は 4dp として表示されています。

 @foreach (var trans in ViewBag.Transactions)
{
    <tr>
        <td>
            @trans.Date
        </td>
        <td>
            @trans.Details
        </td>
        <td>
            @trans.Currency
        </td>
        @if (trans.AccountTo == ViewBag.SelectedAccount)
        {
            <td>
               + @trans.Amount
            </td>
            <td>

            </td>
            <td>
                @trans.AccountFrom
            </td>

私はすでに @trans.Amount.ToString("#.##") を試したか、次のようなヘルパーを作成しました: http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net- mvc-3-and-the-helper-syntax-within-razor.aspx しかし、それでも機能しませんでした。どうすれば2dpに丸めることができますか?

4

1 に答える 1

3

#カスタム文字列フォーマットを実行する場合、と0をプレースホルダーとして使用することには明確な違いがあります。

元の小数点以下が 4 桁の場合、小数点以下 2 桁のみが必要な場合は、2 つのプレースホルダー 0 または # のいずれかを使用できます。

// numeric real literal to be treated as decimal with m or M suffix
decimal d = 100.1255M; 

string s1 = d.ToString( "#.##" ); // 100.13
string s2 = d.ToString( "0.00" ); // 100.13

ただし、小数点以下 5 桁が必要な場合は、ここで違いが明らかになります。

decimal d = 100.1255m;

string s1 = d.ToString( "#.##" ); // 100.13
string s2 = d.ToString( "0.00" ); // 100.13
string s3 = d.ToString( "#.#####" ); // 100.1255
string s4 = d.ToString( "0.00000" ); // 100.12550

カスタム数値形式文字列に関する MSDN を確認すると、違いが明らかになります。

ゼロ プレースホルダー
ゼロが存在する場合は、ゼロを対応する数字に置き換えます。それ以外の場合は、結果文字列にゼロが表示されます。

詳細については、「0」カスタム指定子を参照してください。

数字のプレースホルダー
「#」記号が存在する場合は、対応する数字に置き換えます。それ以外の場合、結果文字列に数字は表示されません。

詳細については、「#」カスタム指定子を参照してください。

于 2013-05-20T19:01:16.990 に答える