如何在Matlab中将数字舍入到10个正确的小数位数

时间:2015-09-16 22:33:54

标签: matlab

如何将x和g(x)的值舍入到10位小数?我觉得fprintf('%0.10', number)没有给出所需的输出,是吗????我的输出给了我最多6位小数而不是10位数:

 fpi1(g, 0.5, 60)
0.500000            1.951392 
1.951392            1.706095 
1.706095            1.543600 
1.543600            1.462184 
1.462184            1.430210 
1.430210            1.419396 
1.419396            1.415971 
1.415971            1.414911 
1.414911            1.414585 
1.414585            1.414485 
1.414485            1.414454 
1.414454            1.414445 
1.414445            1.414442 
1.414442            1.414441 
1.414441            1.414441 
1.414441            1.414441 
1.414441            1.414441 
1.414441            1.414441 
1.414441            1.414441 
1.414441            1.414441 
1.414441            1.414441 
1.414441            1.414441 
1.414441            1.414441 

修复它的命令是什么,即将输出设为10位小数?提前谢谢!

%Program 1.2 Fixed-Point Iteration
%Computes approximate solution of g(x)=x
%Input: inline function g, starting guess x0, 
%       number of steps k
%Output: Approximate solution xc
function xc=fpi1(g,x0,k)
format long;
x(1)=x0;
for i=1:k
  x(i+1)=g(x(i));

  fprintf('%f            %f \n', x(i), g(x(i)));
  %printf(x(i), g(x(i)));
end
xc=x(k+1);

3 个答案:

答案 0 :(得分:2)

这是fprintf('%0.10f', number);。您忘记了说明符中的f

>> number = 141421.1240981320948710948018941;
>> fprintf('%0.10f\n', number)
141421.1240981321

答案 1 :(得分:2)

您可以使用round并将位数设置为10

Y = round(X,N);% rounds to N digits

请注意,这只会对实际数字进行舍入,为了显示它们,您需要{@ 1}}作为@rayryeng的回答。

答案 2 :(得分:0)

你真的想要对数字进行舍入,还是只围绕显示的值?使用fprintf仅执行后者。要围绕数据本身,你可以按照

的方式做一些事情
foo = round(foo.*1000)./1000 

哪个会圆到3个地方。 Mathworks的疯狂愚蠢不包括" number_of_digits"对round的论证 - 我们中的许多人只是按照

的方式推行自己的功能
myround(x,numdig)
x = round(x.*(10^numdig))./(10^numdig)