今天我在j2ee社群,遇到乙個人提問:
問題:1 / (n * (n + 1));n從1開始,一直加到1 / (19 * 20),但是在執行過程中,s不會變化
public class test while(n < 20);
system.out.println(s);}}
以下是執行結果:0.0
0.0 2
0.00.0 3
0.00.0 4
0.0......
分析:整數之間的「/」是取整除法,以上的例子中,1 / (n * (n + 1)) 每次的結果都只能是0
如果想要得到1 / (n * (n + 1))的小數值,那麼可以這樣寫:
public static void main(string args) while(n < 20);
system.out.println(s);
}
備註:(1)float和double都有固定的儲存的格式,這些格式都有國際標準,不是想讓它們有幾位小數就有幾位小數的;
(2)列印格式屬於資料顯示問題,而不是資料儲存的問題,完全可以使用一般的float或double的存資料,然後顯示時固定列印2位小數,方法是使用相關的格式化資料的類(如decimalformat)把數值格式化成想要格式的字串。
求兩整數相除 29 兩數相除
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。示例1 輸入 dividend 10,divisor 3 輸出 3 示例2 輸入 dividend 7,divisor...
華為機試 整數相除
兩個整數相除,將結果用字串返回。如果是迴圈小數,將迴圈的位用括號括起來。函式原型為 void div const int a,const int b,char str 輸入 1 3 輸出 0.3 include includeusing namespace std int maxn 100 設定字串...
整數相除時要注意
整數 整數 整數。當需要保留小數字時,需要強制型別轉換。表示式計算結果精度與被除數和除數中精度最高的看齊,見下例 int a 1024 int b 2048 int c 3 system.out.println a b c a b c system.out.println a float b c a...