在EditField中增加Matlab位值数字格式输出

时间:2018-04-18 11:33:17

标签: matlab matlab-figure matlab-app-designer

我正在使用AppDesigner和Matlab R2017B。

我想知道如何在matlab中更改数字格式。 为了让自己更清楚: 我有3个EditFileds,用户在两个字段中输入一个数字并按下一个claculate按钮,该按钮添加2个值并将答案输出到第三个EditField。这很好用。但是,如果数字输出大于9999,那么我会得到像1.0e + 04这样可怕的指数形式,我怎么能告诉matlab产生更多的位置值?例如:而不是1.0e + 4我得到10,000

2 个答案:

答案 0 :(得分:1)

您可以手动或以编程方式更改显示

手动:选择EditField,转到“设计视图”并更改其“ DISPLAY”属性。

以编程方式:

fig = uifigure;
edt = uieditfield(fig,'numeric','ValueDisplayFormat','%.2f');

其中%.2f是一个format operator,它强制2个小数位。

另外,请参见numeric uieditfield properties

答案 1 :(得分:0)

如果要完全控制“第三个EditField”的显示格式,则可以考虑将类型从NumericEditField更改为EditField,即字符串版本。然后,您可以将数字格式化为字符串并根据需要显示,例如使用单位或逗号分隔符。

使用您的示例:

“而不是1.0e + 4我[希望] 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作为字符串,可以保留您所做的所有格式更改,例如逗号分隔符。它还可以灵活地避免在没有小数(10000 => '%.2f' => '10000.00')或不必要的舍入(56.576 => {{1 }} => '%.2f'

获取格式中的逗号分隔符不是您的问题的明确部分,但是有很多方法可以做到这一点。如果有人需要,我很乐意分享我的解决方案。

最好的问候。