在EditField中增加Matlab位值数字格式输出
Increasing Matlab place values number format output in EditField
我正在使用 AppDesigner 和 Matlab R2017B。
我想知道如何在 matlab 中更改数字格式。
为了让自己更清楚:
我有 3 个 EditFileds,用户在其中两个字段中输入一个数字,然后按下一个 claculate 按钮,该按钮添加 2 个值并将答案输出到第三个 EditField。这一切都很好。但是,如果数字输出大于 9999,那么我会得到可怕的指数形式,如 1.0e+04 我如何告诉 matlab 产生更多的位值?例如:我得到 10,000
而不是 1.0e+4
您可以手动或以编程方式更改显示
手动:select EditField,转到 'Design View' 并更改其 'DISPLAY' 属性。
以编程方式:
fig = uifigure;
edt = uieditfield(fig,'numeric','ValueDisplayFormat','%.2f');
其中 %.2f
是一个 format operator,强制保留 2 位小数。
如果您想对"third EditField"的显示格式有绝对的控制权,那么您可以考虑将类型从NumericEditField
更改为EditField
,即字符串版本。然后您可以将数字格式化为字符串并根据需要显示,例如带有单位或逗号分隔符。
使用你的例子:
"Instead of 1.0e+4 I [want] 10,000".
在 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
但是要获得您要求的格式,即 10,000,您需要相应地格式化 resultFormatted
字符串。现在,将结果 EditField 作为字符串,您所做的任何格式更改都将被保留,例如逗号分隔符。它还允许灵活地避免在存在 none(10000
=> '%.2f'
=> '10000.00'
)或不需要的舍入(56.576
= > '%.2f'
=> '56.58'
).
在格式中获取逗号分隔符并不是您的问题的明确部分,但是有很多方法可以做到这一点。如果有人需要,我很乐意分享我的解决方案。
此致。
我正在使用 AppDesigner 和 Matlab R2017B。
我想知道如何在 matlab 中更改数字格式。 为了让自己更清楚: 我有 3 个 EditFileds,用户在其中两个字段中输入一个数字,然后按下一个 claculate 按钮,该按钮添加 2 个值并将答案输出到第三个 EditField。这一切都很好。但是,如果数字输出大于 9999,那么我会得到可怕的指数形式,如 1.0e+04 我如何告诉 matlab 产生更多的位值?例如:我得到 10,000
而不是 1.0e+4您可以手动或以编程方式更改显示
手动:select EditField,转到 'Design View' 并更改其 'DISPLAY' 属性。
以编程方式:
fig = uifigure;
edt = uieditfield(fig,'numeric','ValueDisplayFormat','%.2f');
其中 %.2f
是一个 format operator,强制保留 2 位小数。
如果您想对"third EditField"的显示格式有绝对的控制权,那么您可以考虑将类型从NumericEditField
更改为EditField
,即字符串版本。然后您可以将数字格式化为字符串并根据需要显示,例如带有单位或逗号分隔符。
使用你的例子:
"Instead of 1.0e+4 I [want] 10,000".
在 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
但是要获得您要求的格式,即 10,000,您需要相应地格式化 resultFormatted
字符串。现在,将结果 EditField 作为字符串,您所做的任何格式更改都将被保留,例如逗号分隔符。它还允许灵活地避免在存在 none(10000
=> '%.2f'
=> '10000.00'
)或不需要的舍入(56.576
= > '%.2f'
=> '56.58'
).
在格式中获取逗号分隔符并不是您的问题的明确部分,但是有很多方法可以做到这一点。如果有人需要,我很乐意分享我的解决方案。
此致。