问题
I am dividing a number, say
x=2;
y=1/3;
z=x*y;
I expect z to be 0.66666666666667
i.e. 14 numbers after decimal point and the same for y. Now when I do that I get 0.6667
only. How to expand the answer into exact 14 digit precision?
回答1:
If it is just about diplaying the number you can use the sprintf
function
str = sprintf('%.14f', pi); % print PI with exactly 14 digits after decimal point
disp(str);
Or fprintf
with just one line:
fprintf('%.14f', pi);
fprintf is for writing to files but prints the string result to the screen if no file identifier is given.
回答2:
If you actually want the number to have that precision then round off to 14 places like this:
format long g
x=2;
y=1/3;
z=x*y;
round(z*1e14)/1e14
ans = 0.66666666666667
If it's just about displaying then use Deve's sprintf
solution.
回答3:
you can type in matlab :
digits(10)
it gives you more floating point precision, or also
digits(20)
for example:
a=1/3
ans = 0.3333
digits(10)
vpa(a)
ans= 0.3333333333
search help of matlab by typing doc in command window and then search : digits
来源:https://stackoverflow.com/questions/18331068/controlling-the-precision-of-floating-point-number-in-matlab