none
輸出顯示非數值 RRS feed

  • 問題

  • 以下是我的程式

    ---------------------------------------------------------------------------------

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace integral_for_unit_circle
    {
        class Program
        {
            static void Main(string[] args)
            {
                double x=0, y,dx,dA,sum=0;      //積分計算單位圓面積
                Console.Write("請輸入dx要分割之值: ");
                dx = double.Parse(Console.ReadLine());
                while(x<=1)
                {
                    x = x + dx;
                    y = Math.Pow(1 - x * x, 0.5);
                    dA = y * dx;
                    sum += dA;
                    Console.WriteLine(sum);
                }
                sum*=4.0 ;                      //到此處程式顯示非數值
                Console.WriteLine(sum);   //同上
                Console.ReadKey();
            }
        }
    }

    -----------------------------------------------------------------------------------

    請問我的程式上哪裡有出問題嗎@@

    C#新手,請大大幫幫忙感激不盡

    2017年10月22日 下午 03:37

所有回覆

  • 假設你的 dx 輸入 2

    那麼你 x = x+ dx;  x 為 2

    這時候 Math.Pow(1-2*2,0.5) 等於於 -3 開耕號 所以非數值

    2017年10月22日 下午 04:03
  • 摁 沒錯是這邊的問題

    不過我輸入dx=0.1還是會出錯@@

    我一步一步看 發現 x = x+ dx;這個加到0.7之後下一次變成0.79999999

    所以加到最後一次會變1.099999導致根號那邊出錯

    請問一下這是什麼原因呢?又應該怎麼修改

    2017年10月22日 下午 04:29
  • 應該是1-x*x得到負數的關係, Math.Pow的第一個參數若為負值, 就會傳回NAN
    2017年10月23日 上午 01:01
  • 先確認你知不知道 float / real 定義的 NaN (非數值) 代表的意思或是形成原因?

    NaN 就是學校教 數學上的 無意義 ,正值開根號不會變成無意義。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年10月23日 下午 01:49
  • 摁 我是剛開始學C#,對於很多語法跟BUG還不是很了解

    現在知道NaN的意思和形成原因了^^

    很抱歉我沒先搞清楚自己的錯誤是什麼,直接把程式PO上來,深感抱歉。

    2017年10月23日 下午 03:02
  • 論壇有簽名檔功能。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年10月24日 下午 02:42