如何舍入到某个浮点精度?

时间:2010-06-07 14:35:20

标签: matlab floating-point rounding number-formatting

我认为这是一个简单的问题。我想要:

a = 1.154648126486416;

成为:

a = 1.154;

而不是:

a = 1.15000000000;

如何在不使用format('bank')的情况下执行此操作。

3 个答案:

答案 0 :(得分:7)

你可以这样做:

a = floor(a*1000)/1000;

答案 1 :(得分:2)

在@ gnovice的答案的基础上,您可以将输出格式化为字符串以消除额外的零。有关所有格式选项,请参阅sprintf文档。

str=sprintf('The result is %1.3f.',a);
disp(str)

将显示“结果为1.154”。在命令提示符下。或者将字符串写入文件等等。

答案 2 :(得分:0)

a = 1.154648126486416;
% desired precision 
b = -3;
% your answer
ans = floor(a*10^(-b))/(10^(-b));

答案是1.1540

如果你不关心其余的数字,这是好的,但如果你关心那么你只需要简单地将“floor”改为“round”。

ans = round(a*10^(-b))/(10^(-b));

答案是1.1550