在matlab中控制浮点数的精度

时间:2013-08-20 09:04:31

标签: matlab precision floating

我正在分数,说

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

我希望z为0.66666666666667,即小数点后的14个数字,y为相同的数字。现在,当我这样做时,我只得到0.6667。如何将答案扩展到精确的14位精度?

3 个答案:

答案 0 :(得分:7)

如果只是将数字拖延,您可以使用sprintf函数

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

fprintf只有一行:

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

fprintf用于写入文件,但如果没有给出文件标识符,则将字符串结果打印到屏幕上。

答案 1 :(得分:6)

如果您确实希望数字具有该精度,那么请将其舍入到14个这样的位置:

format long g

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

ans =      0.66666666666667

如果只是显示,那么请使用Deve的sprintf解决方案。

答案 2 :(得分:0)

你可以输入matlab:

digits(10)

它为您提供更多浮点精度,或者

digits(20)

例如:

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

通过在命令窗口中输入doc搜索matlab的帮助,然后搜索:digits