2

我正在使用 AppDesigner 和 Matlab R2017B。

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

4

2 回答 2

1

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

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

以编程方式:

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

where%.2f是强制保留 2 位小数的格式运算符。

另请参阅数字 uieditfield 属性

于 2018-08-26T14:22:22.417 回答
0

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

使用您的示例:

“我[想要] 10,000 而不是 1.0e+4”。

有一个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=> '%.2f'=> '56.58')。

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

此致。

于 2018-08-28T21:42:33.440 回答