添加后的小数位数太多

时间:2013-03-07 19:59:09

标签: c#

我想添加0.01到36.01并得到36.02作为结果 但是下面的代码返回36.019999999999994。

Double d = 36.01;
d = d + 0.01;

有人能告诉我如何获得36.02的结果吗? 提前致谢

4 个答案:

答案 0 :(得分:6)

使用Decimal代替Double。十进制具有更高的准确性,例如,当您添加美元金额时,建议使用。

这是一篇很好的上一篇SO文章,它将为您提供更多详细信息:

decimal vs double! - Which one should I use and when?

答案 1 :(得分:3)

那是因为你要添加浮点数。 0.01是十进制分数1/100 th ,在可用的位数中不能用二进制精确表示。请考虑使用decimal类型,或使用适当的Math.Round()重载和舍入样式四舍五入到所需的精度。

答案 2 :(得分:2)

您应该按照建议使用decimal。更重要的是,您应该阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic以了解潜在的问题

答案 3 :(得分:0)

double是双精度浮点数,decimal具有更高的精度。

您应该使用decimal代替。

decimal d = 36.01m;
d = d + 0.01m;
Console.WriteLine(d);

这是 DEMO

当然,我建议你阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic