2013-08-20 94 views
0

我分了一些,說控制浮點數的精度在MATLAB

x=2; 
y=1/3; 
z=x*y; 

我想到Z到是0.66666666666667即小數點後14號和同爲年。現在,當我這樣做時,我只得到0.6667。如何將答案擴展到精確的14位精度?

+2

嘗試在命令行中輸入'format long g' – Dan

+0

它給了我小數點後的15位數字。我想要完全如此。如何做到這一點 – MSD

+3

然後四捨五入到14位 – Dan

回答

7

如果只是diplaying的數量,您可以使用sprintf功能只用一行

str = sprintf('%.14f', pi); % print PI with exactly 14 digits after decimal point 
disp(str); 

或者fprintf

fprintf('%.14f', pi); 

fprintf是書面文件,但輸出字符串結果如果沒有給出文件標識符,則返回到屏幕。

6

如果你真的想要的數量有那麼精確四捨五入至14位是這樣的:

format long g 

x=2; 
y=1/3; 
z=x*y; 
round(z*1e14)/1e14 

ans =  0.66666666666667 

如果它只是顯示然後使用德韋的sprintf解決方案。

0

你可以輸入MATLAB:

digits(10) 

它給你更多的浮點精度,或者也

digits(20) 

例如:MATLAB的

a=1/3 
ans = 0.3333 
digits(10) 
vpa(a) 
ans= 0.3333333333 

搜索幫助通過鍵入doc在命令窗口然後搜索:位數

+0

oops,我的意思是數字(10) – zizi

+1

使用如果您只需要顯示少量數字,則可變精度算術模塊是一種顯示更高數字精度的屁股向後(無法進攻)方式。如果您需要更多數量的精度數字,請僅使用'vpa'。在這種特殊情況下,這裏不需要'vpa'。 – rayryeng