C#中double循环的问题

pjw100 2011-04-16 11:59:36
下面是一个简单的循环,基数为1.0,每次增量0.1,但我在调试时发现每次增加0.1时,它并不等于1.1,1.2,1.3(可能是1.1000000007),C#的double精度的确有这个问题,但我想保持准确的精度,循环变量保持在1.0,1.1,1.2,1.3,1.4。
但我不知道该如何控制。
在这里的问题就是1.0 + 0.1 != 1.1是成立的。
for (double cur = 1.0; cur <= 1.4; cur += 0.1)
{
// Do Something
}
...全文
162 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pjw100 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ojlovecd 的回复:]

C# code

for (decimal d = 1.0m; d <= 1.4m; d += 0.1m)
{
Console.WriteLine(d);
}
[/Quote]
恩,我已经照这种方式做了。看来实际中运用double, float还是比较危险的。
我姓区不姓区 2011-04-16
  • 打赏
  • 举报
回复

for (decimal d = 1.0m; d <= 1.4m; d += 0.1m)
{
Console.WriteLine(d);
}

pjw100 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xx_mm 的回复:]

http://hi.baidu.com/jiang_yy_jiang/blog/item/a5eb73384cbc2ccfd46225a4.html
[/Quote]
谢谢,我试过了,还是会出现一样的问题。
--------------------------------------------
double i = 1.0d;
double j = i + 0.1d;
double k = j + 0.1d;

k已经不等于1.2了。
pjw100 2011-04-16
  • 打赏
  • 举报
回复
double i = 1.0;
double j = i + 0.1;
double k = j + 0.1;
-----------------------
j可能不等于1.1,k可能不等于1.2

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧