如何在 Matlab 中将数字四舍五入到 10 个正确的小数位
Posted
技术标签:
【中文标题】如何在 Matlab 中将数字四舍五入到 10 个正确的小数位【英文标题】:How to round a number to 10 correct decimal places in Matlab 【发布时间】:2015-09-16 22:33:53 【问题描述】:如何将 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);
【问题讨论】:
【参考方案1】:它是fprintf('%0.10f', number);
。您忘记了说明符中的f
。
>> number = 141421.1240981320948710948018941;
>> fprintf('%0.10f\n', number)
141421.1240981321
【讨论】:
【参考方案2】:您可以使用round
并将位数设置为10
:
Y = round(X,N);% rounds to N digits
请注意,这只会对实际数字进行四舍五入,要显示它们,您需要@rayryeng 回答的frpintf
。
【讨论】:
显然你有比 R2012 更好的东西 :-( 这是在什么版本中实现的? @IKavanagh 在 R2014b 中,这些语法被添加到四舍五入到任意数量的小数或有效数字以及舍入持续时间值: Y = round(X,N) Y = round(X,N,type ) Y = round(t) Y = round(t,unit) 旧版本仅支持此语法,四舍五入到最接近的整数:Y = round(X) 根据文档 啊,我还在 R2014a 上。所以我没有白白写自己的roundto()
函数!【参考方案3】:
您真的想对数字进行四舍五入,还是只对显示的值进行四舍五入?使用 fprintf
只做后者。要舍入数据本身,您可以按照
foo = round(foo.*1000)./1000
这将四舍五入到 3 个位置。 Mathworks 在round
中不包含“number_of_digits”参数是非常愚蠢的——我们中的许多人只是按照以下方式滚动我们自己的函数
myround(x,numdig)
x = round(x.*(10^numdig))./(10^numdig)
【讨论】:
round
实际上具有该功能,请参阅我的答案和文档。以上是关于如何在 Matlab 中将数字四舍五入到 10 个正确的小数位的主要内容,如果未能解决你的问题,请参考以下文章