2013-11-01 60 views
0

我正在爲我的軟件開發講義進行分配,並且已被要求編碼for循環,其中用戶被要求輸入兩個數字,這兩個數字分別是一個數字的上限和下限表要顯示。正方形函數錯誤 - 可能丟失精度

這在BlueJ的編碼,如果這能幫助(?)

這是循環我到目前爲止,我已要求這兩個數outwith這個循環,並設置所有,但i變量作爲花車的作爲一個雙重的i;

for (i = lowNum; i <= highNum; i++) { 
     //find square of number 
      squareNum = i * i; 

     //find cube of number 
      cubeNum = i * i * i; 

     //find square root of number 
      rootNum = Math.sqrt(i); 

     //display under appropriate headings 
} 

當我嘗試和運行它,編譯器錯誤出現說possible loss of precision, required: float; found: double;我試圖改變變量類型爲浮動,但隨後類似的錯誤(float和double被逆轉),突出在Math.sqrt(i);i的代碼。

有誰知道如何解決這個問題?

回答

4

Math.sqrt()返回一倍。將其轉換爲浮點形式如下:(float)Math.sqrt()

0

在您自己的代碼中使用double還不如更好嗎?然後你a)不必擔心類型轉換,b)編譯器如此優雅地試圖提醒你,精確度損失的可能性更小。

這樣做更像是告訴編譯器閉嘴而不是接受它的幫助,IMO。

+0

我試着將它設置爲雙精度,但是然後正方形和立方體不起作用 –