如何将浮点数四舍五入到特定精度?

3

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


a = 1.154648126486416;

变成:

a = 1.154;

而不是:

a = 1.15000000000;

我该如何做到不使用format('bank')来实现呢?

4
你是想四舍五入、直接截取,还是只是显示特定数量的数字? - Doresoom
3个回答

7
你可以这样做:
a = floor(a*1000)/1000;

2

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

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

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


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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接