首页 新闻 会员 周边 捐助

C# List<double> 问题

0
[已解决问题] 解决于 2014-05-22 14:05

谁能解释一下,这是为啥,为啥值出现了问题?

c#
✎﹏ℳ๓₯㎕ღ的主页 ✎﹏ℳ๓₯㎕ღ | 小虾三级 | 园豆:1499
提问于:2014-05-22 11:56
< >
分享
最佳答案
0

精度转换的问题,问题应该出在i-=0.5上,这个0.5默认应该不是double的,在转换时会出现精度问题.

你看下I的值是多少

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2014-05-22 11:57

经测试,0.5是double类型的

刘宏玺 | 园豆:14020 (专家六级) | 2014-05-22 12:59

@刘宏玺: 我记得默认是float

吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-22 13:04

@吴瑞祥: 

刘宏玺 | 园豆:14020 (专家六级) | 2014-05-22 13:05

@刘宏玺: 看了.确实了double这就不太明白是哪里丢失精度了撒``

吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-22 13:57

@吴瑞祥: 因为二进制小数转换成十进制小数就会不精确了,只有 0.5 0.25 0.125 之类的是准确的

刘宏玺 | 园豆:14020 (专家六级) | 2014-05-22 13:59

@刘宏玺: 哦,看了下大概的意思是,小数不停乘以2最后能为0,才不会丢失精度,

吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-22 14:17
其他回答(2)
0

我刚刚测试了一下,发现确实存在这个问题,我认识是二进制存小数不准确的问题导致的,整数肯定不会出问题

刘宏玺 | 园豆:14020 (专家六级) | 2014-05-22 13:00
0

浮点数的精度本来就是可变的

Moulton | 园豆:206 (菜鸟二级) | 2014-05-22 14:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册