我有一个项目列表,其中一个属性是十进制类型。
当我尝试对项目属性求和并用两位小数显示它时,当总和是偶数时,它将无法工作。
例如:
如果总和是30000,我希望它显示30000.00,现在只显示30000。
但如果总和为30000.55,则显示30000.55。
我的观看代码:
for (var j = 0; j < Model.Calculation.Count; j++)
{
@Model.Calculation[j].Sum(item => item.InterestAmount).ToString("#.##")
}
当总和为30000时,如何让它显示30000.00?
答案 0 :(得分:5)
您使用"#.##"
作为格式字符串,#
表示&#34;如果数字很重要,则显示数字&#34;。如果始终想要显示两位数字,则应使用"0.00"
作为模式。有关详细信息,请参阅documentation for custom numeric format strings。
示例代码:
using System;
class Test
{
static void Main()
{
Show(0m); // 0.00
Show(0.123m); // 0.12
Show(123.456m); // 123.46
Show(-123.456m); // -123.46
}
static void Show(decimal value)
{
Console.WriteLine(value.ToString("0.00"));
}
}
请注意,这会使用当前文化进行格式化,因此最终可能会出现&#34; 123,46&#34;例如。如果总是想要小数点分隔符的点,请指定CultureInfo.InvariantCulture
作为格式提供者。
答案 1 :(得分:1)
&#34;#&#34;自定义格式说明符用作数字占位符符号。 如果正在格式化的值在其中的位置有一个数字 &#34;#&#34;符号出现在格式字符串中,该数字被复制到 结果字符串。否则,没有任何东西存储在该位置 结果字符串。
请注意,此说明符永远不会显示不是a的零 有效数字,即使零是字符串中的唯一数字。它 只有当它是数字中的有效数字时才会显示零 正在展示。
您可能需要改为使用0.00
。
(30000).ToString("0.00") // Prints 30000.00
(30000.55).ToString("0.00") // Prints 30000.55
当然,这个.ToString()
方法默认使用当前线程文化。这就是为什么你的小数分隔符取决于你当前的文化。如果您始终希望将.
作为小数点分隔符,则需要提供.
作为NumberDecimalSeparator
property InvariantCulture
的文化。
答案 2 :(得分:1)
替换你的&#34;#&#34; 0
for (var j = 0; j < Model.Calculation.Count; j++)
{
@Model.Calculation[j].Sum(item => item.InterestAmount).ToString("0.00")
}
答案 3 :(得分:0)
实现这一目标的更简单,更有效的方法。
for (var j = 0; j < Model.Calculation.Count; j++)
{
@Model.Calculation[j].Sum(item => item.InterestAmount).ToString("F")
}
// F: 0.00
// F0: 0
// F1: 0.0
// F2: 0.00
// F3: 0.000
有关数字的更多此类格式,请访问here