2014-02-07 114 views
0

我在一個腳本中表達了權力的方法,我試圖做一個否定的,這是1/final_answer如何打印小於1但大於0的數字?

事情是它不打印的東西,如2^-3它是.125

using System; 

class MainClass 
{ 
static void Main() 
{ 
    Console.Write ("Enter a base number: "); 
    string str_x = Console.ReadLine(); 
    double x = double.Parse (str_x); 

    Console.Write ("Enter an exponent: "); 
    string str_n = Console.ReadLine(); 
    double n = double.Parse (str_n); 

    double final = 1; 
    int count = 1; 
    while (count != n+1) { 
     final = final * x; 
     count++; 
    } 
    if (n < 0) 
     final = 1/final; 


    Console.WriteLine(final); 
} 

}

+0

是否有任何理由不使用Math.Pow調用? –

+3

你確定在'while'條件下你不是指'count!= Math.Abs​​(n)+ 1'嗎? –

+0

是的,作業說不是 – user3281855

回答

2

首先,環路

int count = 1; 
while (count != n + 1) 
    final = final * x; 
    count++; 
} 

不能如果n == -3因爲count結束時,我永遠是積極的。

此外,它可能是因爲你比較intdouble

double n = float.Parse (str_n); 
.... 
int count = 1; 
while (count != n + 1) { 

你應該避免與雙打使用==!=是一個死循環。

+0

對不起,我更新了scrit使它變成double.Parse。我可以打印出正面的指數,但有負面影響會凍結。 – user3281855

0

由於指數爲負值,因此循環不會終止,因爲count永遠不會達到負值(或零),至少在其溢出之前。

正如其他人所說,讀取指數爲整數,而不是雙倍。

+0

感謝您提前發表評論!睡覺對我來說我想:)負值的+1! – pid

+0

這應該是一個評論,而不是一個答案。 – aevitas

+0

@aevitas爲什麼?它回答了這個問題。 – TypeIA