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?
问题是格式字符串{0:.##}
格式为 0 作为空字符串,但是空字符串不是 Convert.ToDecimal
的有效参数。若要避免可能的格式异常,可以使用 {0:0.##}
将 0 的格式设置为0
。
(用户 sasfrog 建议{0:#.##}
,但由于这也将 0 格式化为空字符串,因此它不起作用。
但是,如果您只是尝试将 Double 值四舍五入到小数点后两位并将结果存储在 Decimal 变量中,那么您应该使用
Decimal amount = Decimal.Round((Decimal)doubleAmount, 2, MidpointRounding.AwayFromZero);
并跳过字符串格式化和解析的不必要开销。