String.format 货币总和四舍五入问题
String.format currency sum rounding issues
所以我检查了 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
查看结果
Total Line -
如何让我的个人总计线不四舍五入? cashMoney 的数据类型是 decimal?
您所看到的是正确的。 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>
如果您不希望它四舍五入,请使用不同的 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 --- > -- --
C1 --- > .2 -- .3 -- .5
C2 --- > .20 -- .30 -- .50
C3 --- > .200 -- .300 -- .500
所以我检查了 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
查看结果
Total Line -
如何让我的个人总计线不四舍五入? cashMoney 的数据类型是 decimal?
您所看到的是正确的。 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>
如果您不希望它四舍五入,请使用不同的 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 --- > -- -- C1 --- > .2 -- .3 -- .5 C2 --- > .20 -- .30 -- .50 C3 --- > .200 -- .300 -- .500