Я делю число, скажем
x=2;
y=1/3;
z=x*y;
Я ожидаю, что z будет 0.66666666666667
, т.е. 14 цифр после запятой и то же самое для y. Теперь, когда я это делаю, я получаю только 0.6667
. Как расширить ответ до точной 14-значной точности?
Я делю число, скажем
x=2;
y=1/3;
z=x*y;
Я ожидаю, что z будет 0.66666666666667
, т.е. 14 цифр после запятой и то же самое для y. Теперь, когда я это делаю, я получаю только 0.6667
. Как расширить ответ до точной 14-значной точности?
Если речь идет только о отображении числа, вы можете использовать функцию sprintf
str = sprintf('%.14f', pi); % print PI with exactly 14 digits after decimal point
disp(str);
Или fprintf
всего одной строкой:
fprintf('%.14f', pi);
fprintf предназначен для записи в файлы, но выводит результат строки на экран, если файл отсутствует. указан идентификатор.
Если вы действительно хотите, чтобы число имело такую точность, округлите его до 14 знаков следующим образом:
format long g
x=2;
y=1/3;
z=x*y;
round(z*1e14)/1e14
ans = 0.66666666666667
Если речь идет только об отображении, используйте решение Deve sprintf
.
вы можете ввести в матлабе:
digits(10)
это дает вам большую точность с плавающей запятой, а также
digits(20)
Например:
a=1/3
ans = 0.3333
digits(10)
vpa(a)
ans= 0.3333333333
найдите справку по Matlab, набрав doc в командном окне, а затем выполните поиск: цифры
vpa
только в том случае, если вам требуется гораздо большее количество цифр точности. В данном конкретном случае vpa
здесь не требуется.
- person rayryeng; 04.12.2015
format long g
в командной строке - person Dan   schedule 20.08.2013