Convert.ToDecimal(String.Format("{0:.##}", doubleA

本文关键字:quot doubleA Format ToDecimal Convert String | 更新日期: 2023-09-27 18:34:54

我对这一行有格式问题:

Decimal amount = Convert.ToDecimal(String.Format("{0:.##}", doubleAmount));  

如果doubleAmount为 0.0,则会引发格式异常。如何处理 0.0?

Convert.ToDecimal(String.Format("{0:.##}", doubleA

问题是格式字符串{0:.##}格式为 0 作为空字符串,但是空字符串不是 Convert.ToDecimal 的有效参数。若要避免可能的格式异常,可以使用 {0:0.##} 将 0 的格式设置为0

(用户 sasfrog 建议{0:#.##},但由于这也将 0 格式化为空字符串,因此它不起作用。

但是,如果您只是尝试将 Double 值四舍五入到小数点后两位并将结果存储在 Decimal 变量中,那么您应该使用

Decimal amount = Decimal.Round((Decimal)doubleAmount, 2, MidpointRounding.AwayFromZero);

并跳过字符串格式化和解析的不必要开销。