这一行有格式问题:
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);
并跳过不必要的字符串格式化和解析开销。
关于c# - Convert.ToDecimal(String.Format ("{0:.##}", doubleAmount)) 不喜欢 0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19327330/