1.1.7

1.1.7 #

解答 #

同上题,直接实现即可。

a

3.00009

double计算存在误差,并不精确。

b

499500

1000 + 999 + 998……

c

10000

1000 * 10,外层循环的结束条件为 $2^i >1000$

代码 #

static void A()
{
    Console.WriteLine("a");
    var t = 9.0;
    while (Math.Abs(t - 9.0 / t) > .001)
    {
        t = (9.0 / t + t) / 2.0;
    }

    Console.WriteLine($"{t:N5}"); // :N5代表保留5位小数,同理可使用N1、N2……
}

static void B()
{
    Console.WriteLine("\nb");
    var sum = 0;
    for (var i = 1; i < 1000; i++)
    {
        for (var j = 0; j < i; j++)
        {
            sum++;
        }
    }

    Console.WriteLine(sum);
}

static void C()
{
    Console.WriteLine("\nc");
    var sum = 0;
    for (var i = 1; i < 1000; i *= 2)
    {
        for (var j = 0; j < 1000; j++)
        {
            sum++;
        }
    }

    Console.WriteLine(sum);
}

// A double 计算存在误差
A();

// B 1000+999+998……
B();

// C 由于2^10 = 1024 > 1000,最终sum = 1000 * 10 = 10000
C();