-1

特定の宿題で困っています。ほとんど不可能に思えます。質問は次のようになります...

「将来的には、正確な通貨計算をサポートする decimal のような型を持たない他のプログラミング言語を使用する可能性があります。これらの言語では、整数を使用してそのような計算を実行する必要があります。複利を計算するために整数のみを使用するようにアプリケーションを変更します。 . すべての金額をペニーの整数として扱います。次に、除算と剰余演算をそれぞれ使用して、結果をドルとセントの部分に分割します。結果を表示するときに、ドルとセントの部分の間にピリオドを挿入してください。

指示に従って整数を使用すると、何かを分割する前にこれらのオーバーフロー エラーが発生します。これを機能させる方法を知っている人はいますか?変更する必要がある元のコードは次のとおりです...

    decimal amount; //amount on deposit at end of each year
    decimal principal = 1000; //initial amount before interest
    double rate = 0.05; //interest rate

    //display headers
    Console.WriteLine("Year{0,20}", "Amount on deposit");

    //calculate amount on deposit for each of ten years
    for (int year = 1; year <= 10; year++)
    {
        //calculate new amount for specified year
        amount = principal *
            ((decimal)Math.Pow(1.0 + rate, year));

        //display the year and the amount
        Console.WriteLine("{0,4}{1,20:C}", year, amount);
    }

これは私がこれまでに持っているコードです...

        ulong amount; //amount on deposit at end of each year
        ulong principal = 100000; //initial amount before interest
        ulong rate = 5; //interest rate
        ulong number = 100;

        //display headers
        Console.WriteLine("Year{0,20}", "Amount on deposit");

        //calculate amount on deposit for each of ten years
        for (int year = 1; year <= 10; year++)
        {
            //calculate new amount for specified year
            amount = principal *
                ((ulong)Math.Pow(100 + rate, year));

            amount /= number;

            number *= 10;

            //display the year and the amount
            Console.WriteLine("{0,4}{1,20}", year, amount);

いくつかの正しい数値を取得しますが、何らかの理由でゼロを吐き出し始めます。

4

2 に答える 2

0

((ulong)Math.Pow(100 + rate、year))成長が速すぎる105 ^10>ulong。

私は彼らがmath.powを小数として維持するように指導していると思います。

amount = (ulong)(Math.Round(principal *
                Math.Pow((number + rate)/100.0, year),0));

            //display the year and the amount
            Console.WriteLine("{0,4}{1,17}.{2,-2}", year, "$" + (ulong)(amount / number), (ulong)(amount % number));

質問は、定数ではなく変数を言うだけです:)変数はすべてまだ長いです

于 2013-03-13T20:03:17.727 に答える
0

amountとの値をnumberループのたびに変更していますが、それがここでやりたいことだとは思いません。これらの割り当てを削除し、最後のConsole.WriteLine呼び出しでパラメーターを変更すると (amount / 100そしてamount % 100ここで役立ちます)、探している結果を得ることができるはずです。

于 2013-03-13T18:59:31.627 に答える