2013-12-20 36 views
1

我試圖將格式更改爲int,但我將失去準確性。我不想以科學記數法顯示這個值。爲什麼數值在MATLAB中以科學記數法存儲?

任何線索爲什麼它以科學記數法保存值?

+5

IEEE浮點數是內部表示;這就是他們的工作方式。顯示完全是另一回事。 – duffymo

+1

數字不是以科學記數法「存儲」(除非可能將它們保存爲文本),它們只能以這種方式顯示。 – sebastian

回答

3

可以使用MATLAB函數format改變如何號碼默認format shortformat long顯示等

如果你想在正確的格式更多的控制顯示數字,例如控制多少小數指向顯示或零填充以使字段寬度/文件名長度保持不變,使用sprintf,可選地連同disp。例如:

sprintf('%0.5f',1/eps)   % 4503599627370496.00000 
sprintf('%0.5g',1/eps)   % 4.5036e+15 
sprintf('%05d.txt',1);   % 00001.txt 
sprintf('%05d.txt',1000);  % 01000.txt 

fprintf就像sprintf但對於寫入文件(格式化命令是相同的)。實際上並沒有改變數字,只是顯示,所以如果您希望函數或腳本以人類可讀的方式顯示某種輸出,同時保留更精確的計算值,那麼這些函數很有用:

n = 5; 
m = 50.53962983 
disp(sprintf('Iteration %d: %2.2f',n, m)); % Iteration 5: 50.53 
disp(m); % 50.5396 - depends on your format setting 
disp(sprintf('%0.8f',m)) % 50.53962983