C# 加法后小数过多

C# 加法后小数过多,c#,C#,我想将0.01添加到36.01,得到36.02作为结果 但下面的代码返回36.0199999994 Double d = 36.01; d = d + 0.01; 谁能告诉我如何得到36.02分的成绩? 提前感谢使用十进制而不是双精度。十进制具有更高的精度,例如,当您添加美元金额时,建议使用十进制 下面是一篇很好的前SO帖子,它将为您提供更多详细信息: double是双精度浮点数,十进制精度更高 您应该使用decimal而不是 decimal d = 36.01m; d = d + 0.01m

我想将0.01添加到36.01,得到36.02作为结果 但下面的代码返回36.0199999994

Double d = 36.01;
d = d + 0.01;
谁能告诉我如何得到36.02分的成绩?
提前感谢

使用
十进制
而不是
双精度
。十进制具有更高的精度,例如,当您添加美元金额时,建议使用十进制

下面是一篇很好的前SO帖子,它将为您提供更多详细信息:


double
是双精度浮点数,
十进制
精度更高


您应该使用
decimal
而不是

decimal d = 36.01m;
d = d + 0.01m;
Console.WriteLine(d);
这里有一个


当然,我建议您阅读

,这是因为您正在添加浮点数。0.01是小数点的1/100,在可用的位数中不能用二进制精确表示。考虑使用<代码>十进制< /代码>类型,或者使用适当的<代码>数学>循环()/ <代码>过载和舍入方式来满足所需的精度。

建议使用<代码>十进制< /代码>。更重要的是,您应该阅读以了解潜在的问题

什么是问题域?例如,您可以查看Math.Round或将类型切换为System.Decimal。我希望您没有得到
36.029999
。再看一遍,也许是36.019999?你说得对,我已经更改了