我将2个不同的字段保存在数据库中作为资金:Balance&量。但是,当我尝试在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?
答案 0 :(得分:2)
执行自定义字符串格式设置时,使用#
和0
作为占位符之间存在明显差异。
原始十进制为4位小数,使用两个占位符中的任意一个,0或#,只需要2位小数就可以使用:
// 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
在Custom Numeric Format Strings上查看MSDN将有助于阐明差异:
零占位符
将零替换为相应的数字(如果有) 存在;否则,结果字符串中会出现零。
有关详细信息:The "0" Custom Specifier。
数字占位符
如果存在相应的数字,请替换“#”符号;否则,没有数字出现在 结果字符串。
有关详细信息:The "#" Custom Specifier