Convert.ToDecimal(String.Format("{0:.##}",doubleAmount))不喜欢0.0

Al *_*ath 1 .net c#

我对此行有格式化问题:

Decimal amount = Convert.ToDecimal(String.Format("{0:.##}", doubleAmount));  
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*Liu 6

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

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

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

Decimal amount = Decimal.Round((Decimal)doubleAmount, 2, MidpointRounding.AwayFromZero);
Run Code Online (Sandbox Code Playgroud)

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