C# 字符串为双精度,尾部为0

C# 字符串为双精度,尾部为0,c#,C#,我不知道如何从C#中的通用货币字符串中删除“double”转换时的零尾 这是我的密码 double reddito = Math.Round(Convert.ToDouble("12500,245"), 3); 预期结果 reddito = 12500.245 真正的结果 reddito = 12500.245000000001 怎么回事?对于货币,最好使用十进制而不是双精度。double和float本质上是实数的近似值,很快就会让您陷入财务计算的麻烦。建议的做法不是测试浮点数和双精度是否

我不知道如何从C#中的通用货币字符串中删除“double”转换时的零尾

这是我的密码

double reddito = Math.Round(Convert.ToDouble("12500,245"), 3);
预期结果

reddito = 12500.245
真正的结果

reddito = 12500.245000000001

怎么回事?

对于货币,最好使用十进制而不是双精度。double和float本质上是实数的近似值,很快就会让您陷入财务计算的麻烦。建议的做法不是测试浮点数和双精度是否相等,而是为此特定原因在值周围留出一个小的公差。

Hmm。我复制了您的代码并得到了预期的结果…我也得到了预期的结果。但是使用debug还是Console.writeline?在调试过程中,我遇到了这个问题,我已使用
控制台打印。writeline
,没有问题,请提供建议!