将double分为数组

时间:2012-10-13 02:15:16

标签: c#

我有一个维数n的整数数组,比如现在n = 9。

我想将其初始化为

[0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.11,0.12]

每个条目都是1 / n,最多需要两位小数, 最后一个条目是1的剩余数字。

我应该如何轻松地做到这一点?这就是我现在所做的事情

double sumOfn=0;
  for (int i = 0; i < array.Length;i++ )
               {
                   double n;

                   if (i < array.Length-1)
                   {
                       array[i] = Math.Floor((1/(double)  array.Length)*100/100);
                       sumOfn += n;

                   }else
                   {
                       array[i] = 1 - sumOfn;
                   }

}

2 个答案:

答案 0 :(得分:2)

计算值时,不能将double约束到特定的精度。

我建议的是对每个n进行100的整数除法,然后将该值除以100.

可以通过将除法的其余部分添加到最后一个元素然后再除以100来轻松计算最后一个值。

当我们第一次学习浮点时,这基本上就像我们在学校所做的那样是欧几里德师:)

答案 1 :(得分:1)

不确定这是否算作创意......:)

        double[] array = new double[9];
        if (array.Length < 1 || array.Length > 100) throw new InvalidTimeZoneException("lol");
        array = Enumerable.Concat(
            Enumerable.Repeat(100 / array.Length, array.Length - 1),
            new[] { 100 - ((array.Length - 1) * (100 / array.Length)) }
            ).Select(i => i / 100.0).ToArray();