1

我对这一行有格式问题:

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

如果doubleAmount为 0.0,则抛出格式异常。我如何处理 0.0?

4

1 回答 1

6

问题是格式字符串将{0:.##}0 格式化为空字符串,但空字符串不是Convert.ToDecimal. 为避免可能的 FormatException,您可以使用{0:0.##}将 0 格式化为0.

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

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

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

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

于 2013-10-11T21:18:11.807 回答