C#:舍入小数,仅在小数点为 0 时显示(例如:3.00 --> 3)
本文关键字:例如 显示 小数 舍入 小数点 | 更新日期: 2023-09-27 18:17:46
我正在以十进制(18,2(存储金额。但我的大部分数据实际上是整数的,只有少数十进制。因此,当我显示表中每个项目的金额时,数字显示全部为 3.00、4.00、5.00 等。
我觉得将所有 0 显示为小数点有点奇怪。如果小数点为 0,我希望在显示时格式化数字。
目前我显示的金额是这样的:
<td id="amnt@(item.FoodID)" class="amountfield">
@Html.DisplayFor(modelItem => item.FoodAmount)
</td>
知道吗??感谢每一个帮助...谢谢。。。
查看您的代码,我假设您正在为您的应用程序使用 ASP.Net MVC。您可以使用"数据注释"来设置数据的格式。
您可以尝试在模型属性中使用显示格式。
[DisplayFormat(DataFormatString = "{0:0.##}")]
Decimal FoodAmount{ get; set; }
使用"#"自定义格式说明符将ToString(string)
与自定义格式一起使用
item.FoodAmount.ToString("0.##")
这最多显示两位数字,但如果它们是不重要的零,则省略它们。
也许这样的事情会有所帮助...
@Html.DisplayFor(modelItem => item.FoodAmount % 1 == 0 ? item.FoodAmount.ToString("F0") : item.FoodAmount.ToString("F2"))
这应提供如下结果:
FoodAmount | Output
--------------------
3.00 | 3
3.01 | 3.01
3.5 | 3.50
我故意将其压缩到一行中以适合您的 Html 帮助程序代码,但如果您愿意,您可以为此创建一个帮助程序函数/扩展方法。
基本思想是将除以 1 的余数得到。如果结果为零(即它可以除以 1 而没有余数(,那么它可以被假定为整数
替代方案:这也是一种选择,可能会更好地阅读......
item.FoodAmount.ToString("F2").TrimEnd('0', '.')
这甚至可能会给你带来更好的结果...
FoodAmount | Output
--------------------
3.00 | 3
3.01 | 3.01
3.5 | 3.5
DataFormatString 在 ViewModel 中运行良好
如果需要,这还将添加一千个分隔符
[DisplayFormat(DataFormatString = "{0:#,##0.##}")]
这对我最有效
[Test]
public void DecimalFormatTests()
{
var amt1 = 1000000m;
var amt2 = 1000000.10m;
var format = "0.#";
Console.WriteLine(amt1.ToString("''£0,0.#"));
Console.WriteLine(amt2.ToString("''£0,0.#"));
}
输出:
£10,00,000
£10,00,000.1