所以我检查了Format currency without rounding和其他一些帖子,但我不确定我是否在任何地方发现了我的具体错误。
查看
@foreach (var item in attyData)
{
<tr>
<td>@String.Format("{0:C0}", item.cashMoney)</td>
</tr>
}
<tr class="info">
<td>@String.Format("{0:C0}", Model.attyData.Sum(item => item.cashMoney))</td>
</tr>
cashMoney的数据库结果
12.2
13.3
查看结果
$12
$13
Total Line - $26
如何让我的个人总线不圆? cashMoney的数据类型为decimal?
答案 0 :(得分:2)
您所看到的是正确的。 12.2和13.3的.Sum()
是25.5,当应用格式时,它将舍入到26。
您要做的是在迭代foreach循环时求和:
@{ var total = 0; }
@foreach (var item in attyData)
{
var cash = Math.Round(item.cashMoney);
total += cash;
<tr>
<td>@String.Format("{0:C0}", cash)</td>
</tr>
}
<tr class="info">
<td>@String.Format("{0:C0}", total)</td>
</tr>
答案 1 :(得分:1)
如果您不想要它四舍五入,请使用其他Currency ("C") Format Specifier。
例如:
decimal a = 12.2M;
decimal b = 13.3M;
var sum = a + b;
Console.WriteLine($"C0 --- > {a,-8:C0} -- {b,-8:C0} -- {sum,-8:C0}");
Console.WriteLine($"C1 --- > {a,-8:C1} -- {b,-8:C1} -- {sum,-8:C1}");
Console.WriteLine($"C2 --- > {a,-8:C2} -- {b,-8:C2} -- {sum,-8:C2}");
Console.WriteLine($"C3 --- > {a,-8:C3} -- {b,-8:C3} -- {sum,-8:C3}");
输出以下内容:
C0 --- > $12 -- $13 -- $26 C1 --- > $12.2 -- $13.3 -- $25.5 C2 --- > $12.20 -- $13.30 -- $25.50 C3 --- > $12.200 -- $13.300 -- $25.500