我对这一行有格式问题:
Decimal amount = Convert.ToDecimal(String.Format("{0:.##}", doubleAmount));
如果doubleAmount
为 0.0,则抛出格式异常。我如何处理 0.0?
问题是格式字符串将{0:.##}
0 格式化为空字符串,但空字符串不是Convert.ToDecimal
. 为避免可能的 FormatException,您可以使用{0:0.##}
将 0 格式化为0
.
(用户 sasfrog 建议{0:#.##}
,但由于这也将 0 格式化为空字符串,因此它不起作用。)
但是,如果您只是想将 Double 值四舍五入到小数点后两位并将结果存储在 Decimal 变量中,那么您应该使用
Decimal amount = Decimal.Round((Decimal)doubleAmount, 2, MidpointRounding.AwayFromZero);
并跳过不必要的字符串格式化和解析开销。