Что ж, вы должны различать как числовое значение (число, хранящееся в памяти вашего компьютера), так и его десятичное представление (массив строк / символов, который вы видите на экране). Вы не можете навязать формат числу: число имеет значение, которое может быть представлено в виде строки различными способами (например, 1234 = 1.234e3 = 12.34e2 = 0.1234e4 = ...
).
Если вы хотите сохранить число с меньшей точностью, вы можете использовать round
, floor
, ceil
для вычисления числа, которое имеет меньшую точность, чем исходное число.
Например. если у вас есть a = 3.860575156847749e+003
и вы хотите, чтобы число состояло только из 5 значащих цифр, вы можете сделать это, используя round
:
a = 3.860575156847749e+003;
p = 0.1; % absolute precision you want
b = p .* round(a./p)
Это даст переменную b = 3.8606e3
, которая может быть представлена различными способами, но должна содержать нули (на практике: очень маленькие значения иногда неизбежны) после пятой цифры. Я думаю, что это то, что вы на самом деле хотите, но помните, что для компьютера это число равно 3.86060000
(это просто еще одно строковое представление того же значения), поэтому я хочу еще раз подчеркнуть, что десятичное представление не устанавливается путем округления числа, но (неявно) вызывая функцию, которая преобразует double в строку, что происходит либо с помощью sprintf
, disp
, либо, возможно, некоторыми другими функциями.