Controlling the precision of floating point number in matlab

前端 未结 3 1251
甜味超标
甜味超标 2021-01-27 09:36

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

相关标签:
3条回答
  • 2021-01-27 09:56

    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.

    0 讨论(0)
  • 2021-01-27 09:57

    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.

    0 讨论(0)
  • 2021-01-27 10:08

    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

    0 讨论(0)
提交回复
热议问题