Увеличение выходного формата числовых значений Matlab в EditField
Я использую AppDesigner и Matlab R2017B.
Мне было интересно, как бы я изменил числовой формат в Matlab. Чтобы сделать себя более понятным: у меня есть 3 EditFileds, пользователь вводит число в два из полей и нажимает кнопку вычисления, которая добавляет 2 значения и выводит ответ в третье поле EditField. Это работает все отлично. Однако, если выходное число больше, чем 9999, я получаю ужасную форму экспоненты, такую как 1.0e+04, как я могу сказать, что matlab производит больше значений места? Например: вместо 1.0e+4 я получаю 10000
2 ответа
Вы можете изменить отображение вручную или программно
Вручную: выберите EditField, перейдите в "Design View" и измените его свойство "DISPLAY".
Programatically:
fig = uifigure;
edt = uieditfield(fig,'numeric','ValueDisplayFormat','%.2f');
где %.2f
является оператором формата, который задает 2 десятичных знака
Также см. Числовые свойства uieditfield
Если вы хотите иметь абсолютный контроль над форматом отображения для "третьего EditField", то вы можете рассмотреть возможность изменения типа с NumericEditField
в EditField
то есть строковая версия. Затем вы можете отформатировать число в виде строки и отобразить, как вы хотите, например, с единицами измерения или разделителями-запятыми.
Используя ваш пример:
"Вместо 1.0e+4 я хочу 10000".
Наличие приложения в appdesigner
со следующими графическими объектами:
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
LabelNumber1 matlab.ui.control.Label
Number1 matlab.ui.control.NumericEditField
LabelNumber2 matlab.ui.control.Label
Number2 matlab.ui.control.NumericEditField
ResultEditFieldLabel matlab.ui.control.Label
Result matlab.ui.control.EditField
Calculate matlab.ui.control.Button
end
Обратите внимание на Result
Объект является стандартной строкой на основе EditFIeld
Ваша функция обратного вызова кнопки может быть:
% Button pushed function: Calculate
function doCalculation(app, event)
value_1 = app.Number1.Value;
value_2 = app.Number2.Value;
% Calculation
result = value_1 + value_2;
resultFormatted = num2str(result);
app.Result.Value = resultFormatted;
end
Но чтобы получить форматирование, как вы просите, т.е. 10000, вам нужно отформатировать resultFormatted
Строка соответственно. Теперь, имея в результате строку EditField в виде строки, все внесенные вами изменения форматирования будут сохранены, например, разделитель запятых. Это также позволяет гибко избегать отображения десятичных дробей, когда их нет (10000
=> '%.2f'
=> '10000.00'
) или нежелательное округление (56.576
=> '%.2f'
=> '56.58'
).
Получение запятой-разделителя при форматировании не является явной частью вашего вопроса, но есть много способов сделать это. Я рад поделиться своим решением, если кто-то захочет его.
С уважением.