MSD
MSD

Reputation: 129

Controlling the precision of floating point number in matlab

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?

Upvotes: 0

Views: 1839

Answers (3)

Deve
Deve

Reputation: 4648

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.

Upvotes: 7

zizi
zizi

Reputation: 11

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

Upvotes: 1

Dan
Dan

Reputation: 45741

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.

Upvotes: 6

Related Questions