如何格式化可为空的小数,使其字符串输出格式化为两位小数?
Salary = g.Where(x => !String.IsNullOrEmpty(x.Salary))
.Select(x => (decimal?)decimal.Parse(x.Salary))
.DefaultIfEmpty(null)
.Sum().ToString();
以上工作,但有时会产生一个很长的小数结果
203827.82763651324038269
我想将结果格式化为两位小数
203827.83
由于我想要的输出是一个字符串,我认为我可以使用
.Sum().ToString("#.##);
但是我收到一个错误No overload for method 'ToString' takes 1 arguments
,我认为这是由于结果是nullable decimal
. 我该如何解决这个问题?
你是对的,Nullable(T).ToString()
不需要任何论据。相反,您可以使用良好的老式string.Format
或字符串插值速记:
var result = g.Where(x => !String.IsNullOrEmpty(x.Salary))
.Select(x => (decimal?)decimal.Parse(x.Salary))
.DefaultIfEmpty(null)
.Sum();
Salary = $"{result:#.###}";
但是,不清楚您为什么要投射到decimal?
这里,为什么不简单地这样:
Salary = g.Where(x => !String.IsNullOrEmpty(x.Salary))
.Select(x => decimal.Parse(x.Salary))
.Sum()
ToString("#.###");
当然,我建议将x.Salary
值保留为asdecimal
而不是string
,但那是另一回事了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句