Как я могу округлить до определенной точности с плавающей точкой? - PullRequest
3 голосов
/ 07 июня 2010

Я думаю, это простой вопрос. Я хочу:

a = 1.154648126486416;

стать:

a = 1.154;

а не:

a = 1.15000000000;

Как мне это сделать без использования format('bank').

Ответы [ 3 ]

7 голосов
/ 07 июня 2010

Вы можете сделать это:

a = floor(a*1000)/1000;
2 голосов
/ 07 июня 2010

Опираясь на ответ @ gnovice, вы можете отформатировать вывод в виде строки, чтобы избавиться от лишних нулей.См. sprintf документацию для всех параметров форматирования.

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

покажет «Результат 1.154».в командной строке.Или записать строку в файл и т. Д. И т. Д.

0 голосов
/ 04 февраля 2015
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

...