如何将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);
答案 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)