无法使用 ToString("#.##") 格式化可为空的十进制

网络蠕虫

如何格式化可为空的小数,使其字符串输出格式化为两位小数?

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. 我该如何解决这个问题?

大卫·G

你是对的,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用ToString()格式化可为空的DateTime?

使用可变的十进制精度格式化double

如何使用ToString()格式化Duration?

在Kotlin中使用十进制格式格式化数字

如何使用fmt库使用十进制逗号格式化浮点数?

如何从十进制中删除尾随零并使用 Python 格式化货币

如何在 QSqlTableModel 中使用十进制数字格式化列

在Java中使用String格式化十进制值

使用十进制值格式化精确双精度后不返回

格式化类似于ToString(“ G29”)的十进制数字,外加千位分隔符

DateTime ToString无法使用ddMMy说明符正确格式化

格式化后数字为10系列时,无法看到两个十进制值

我应该使用ToString()或GetDateTimeFormats()格式化DateTime吗?

当以剃刀形式在ToString(“ 0.0”)中使用整数时,显示整数而不是十进制

十进制.ToString的不同行为

在python中使用本地化的千位分隔符和十进制精度格式化数字

使用格式参数覆盖ToString()

使用最多五个总位数格式化双精度值,必要时四舍五入十进制数字

使用Linq Lambda函数将可为空的十进制数字求和成百分比

如何格式化声明为 int 的变量?使用 ToString("N0") 格式?

格式化十进制数

格式化十进制值

格式化十进制xamarin

使用Play Json和Salat格式化可为空的Seq或对象列表

指定DateTime.ToString(“ o”)十进制精度

使用 PrintfTickFormatter 将散景 x 轴从十进制格式化为百分比

在格式之外,应该使用toString吗?

使用重写的toString()的toString()的重写

使用String.format的Java十进制格式?