好奇怪啊,用for循环写的这样的等式一直计算出50个,其实实际计算是51,我打印出来,有好多数都有很长的小数点,想请教一下,该如何将那些很长的小数点去除?

好奇怪啊,用for循环写的这样的等式一直计算出50个,其实实际计算是51,我打印出来,有好多数都有很长的小数点,想请教一下,该如何将那些很长的小数点去除?

关于相加出现多余小数你可以参考这篇问答:https://bbs.csdn.net/topics/300023952
里面有许多人曾经讨论过这个问题可供参考
当然 你也可以把double改为decimal
所有有小数点计算时,尽可能用更高精度的 decimal 型,初始化decimal类型时需要使用m/M后缀,不用的话会被被认为隐式的将double类型转换为decimal类型而报错。(float也是,加f/F后缀)
下面是改变之后的正确代码:
decimal a = -110;
decimal b = 110;
decimal c = 4.4m;
int n = 0;
List<decimal> list = new List<decimal>();
for (decimal i = a; i <= b; i+=c)
{
Convert.ToDouble(i).ToString("0.00");
list.Add(i);
n++;
}
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine("我是N"+n);
Console.ReadLine();
