【发布时间】:2011-03-22 09:04:28
【问题描述】:
嗨。我有以下问题:
43.65+61.11=104.75999999999999
对于小数是正确的:
(decimal)43.65+(decimal)61.11=104.76
为什么 double 的结果是错误的?
【问题讨论】:
-
处理double not bing 无法表示所有数字的问题有很多问题。如果您搜索c# and double,您会发现不少。这个很好,例如:Why is (double)0.6f > (double)(6/10f)?。另外,Jon Skeet's article 值得一读。
-
您不需要转换为十进制。只需使用“m”后缀即可。例如,43.6m + 61.11m 将两种文字都标识为“十进制类型值”。