係統粉 > 電腦問答 > 其他問答

已解決基本數據的轉換與輸出的問題(Java)

提問者:送你一車舅舅  |  瀏覽次  |  提問時間:2017-03-23  |  回答數量:6

基本數據的轉換與輸出的問題(Java) 程序:public class E{public static void main (String args[]) {int c=2200;long d=8000;float f;double g=123456789.123456789;c=(int)d;f=(float)g;//導致精度的缺失System.out.print(\"c= \"+c);System.out.println(\"d= \"+d);System.out.println(\"f= \"+f);System.out.println(\"g= \"+g);}}程序運行的結果是:c= 8000d= 8000 f= 1.23456792E8 g= 1.2345678912345679E8我的問題: 1. 為什麼第6行是“print”而不是“println” 2.1.23456792E8和1.2345678912345679E8分別是什麼意思? 3. f和g的值為什麼是1.23456792E8和1.2345678912345679E8而不是123456789.123456789和123456789.123456789

已有6條答案
嘣嘣嘣叭叭叭

嘣嘣嘣叭叭叭

回答數:29  |  被采納數:146

1、
print打印結果
println 打印結果並換行

2、保留小數位數不同

3、
2種結果一樣寫法不同而已
2017-03-24 00:53:46
讚 2
包子粽子糯米團

包子粽子糯米團

回答數:119  |  被采納數:95

解答:

1)
print 直接在當前光標處打印結果集
println 先把當前光標換行後再打印結果集

2)
由於float類型和double類型精度不一樣,因此會自動保留最大精度的範圍值而舍去範圍以外的值,因此輸出的結果小數的為數就不一樣

3)
1.23456792E8和1.2345678912345679E8 這些類型是科學技術法的表達,可以把E看成是log(10)值 意思就是1.23456792E8 = 1.23456792 * 10的8次方的意思,java虛擬機默認的時候是按科學技術法輸出的,因此這些數據都是一個含義一樣的意思!如果想自由輸出 可以自己定義輸出格式!
2017-03-24 00:13:58
讚 11
安之若素了誰

安之若素了誰

回答數:144  |  被采納數:57

樓上的兩位,我的第三問還有點問題:你們說1.23456792E8和123456789.123456789是一個意思,但這兩個表示方法好像有差異,123456789.123456789就算按科學技術法來表示也應該是1.23456789E8,為什麼它輸出的是1.23456792E8?(有兩個數字不同)
2017-03-24 04:19:15
讚 14
騷年來杯特侖蘇

騷年來杯特侖蘇

回答數:138  |  被采納數:143

轉換的時候 導致精度誤差 最後位 數據溢出!
2017-03-24 06:09:02
讚 13
章魚2丫

章魚2丫

回答數:151  |  被采納數:35

數據溢出就導致兩個數不同?這個差異好大!
2017-03-24 10:33:22
讚 15
tm_death

tm_death

回答數:68  |  被采納數:79



定義的類型不一樣,所開辟的內存空間就不一樣,
有的空間大裝的數據精確!
有的空間小裝的數據會把多出來的數據溢出!
2017-03-24 08:32:54
讚 6
相關問答
最新其他問答
解決方法