matlab结果输出小数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab结果输出小数相关的知识,希望对你有一定的参考价值。

参考技术A Matlab一般默认显示小数,若是不显示,你可以用format long来显示。还有一种方法,即是类型转换,比如:n=double(1)/2;则可以显示位小数。

有两种可能。
一种是matlab显示格式被设为了分数。可以用format long转换为小数显示。具体可参看format的帮助文件。
一种是使用了符号计算,得到的精确解,会出现分数。可以用vpa转换为小数显示。

x=sym(1/2)
y=vpa(x)
具体可参看vpa的帮助文件。
format 默认格式.
format short 5字长定点数.
format long 15字长定点数.
format short e 5字长浮点数.
format long e 15字长浮点数.
format short g.
format long g.
format hex 16进制.
format bank 定点货币形式.
format rat 小数分数表示.
format + +,-,空格.
format compact 压缩空格.
format loose 包括空格和空行.
format long 15字长定点数.
format short e 5字长浮点数.
format long e 15字长浮点数.
format short g.
format long g.
format hex 16进制.
format bank 定点货币形式.
format rat 小数分数表示.
format + +,-,空格.
format compact 压缩空格.
format loose 包括空格和空行.

当然也可以不用format 命令,可以修改系统的默认设置格式,File->Preferences->Command Window->Text Display.

如果想得到分数可以用rats()函数
如果想得到根号,只有用符号表示了,当然用符号表示是万能的。例如:
a=1/3 得到 0.33333
rats(a) 得到 1/3
a='sqrt(3)' 得到 sqrt(3) 不过这是字符型,要转换成数值型可以用eval_r(a),或str2num(a).

但是无论Matlab中采取什么样的输出格式,在系统内核中的变量的精度总是保持精确的(尽可能)。除非你人为的改变它的计算精度。我们可以用一个简单的例子来说明这个问题:如a=1/3 显示为0.33333333
a=a*3 得到 1 (不是0.99999999)
在很多其它的程序设计语言中是不可能得到1的。这就说明了Matlab在计算的过程中不会损失用户的计算信息(包括中间结果)。
fprintf函数
var(n) % n为你想得到的小数点为数.

我想要 2 个小数点结果用于 Python 上的预测

【中文标题】我想要 2 个小数点结果用于 Python 上的预测【英文标题】:I want to 2 decimal points result for predicts on Python 【发布时间】:2021-12-25 18:12:36 【问题描述】:

我的输出有太多小数点。但我想要 2 点浮动结果。你能帮帮我吗?

例如:42.44468745 -> 42.44

y_pred=ml.predict(x_test)
print(y_pred)

输出:

[42.44468745 18.38280575  7.75539511 19.05326276 11.87002186 26.89180941
 18.97589775 22.01291508  9.08079557  6.72623692 21.81657224 22.51415263
 24.46456776 13.75392096 21.57583275 25.73401908 30.95880457 11.38970094
  7.28188274 21.98202474 17.24708345 38.7390475  12.68345506 11.2247757
  5.32814356 10.41623796  7.30681434]

【问题讨论】:

np.round(y_pred, 2) 工作吗? 您想要打印到小数点后两位,还是将y_pred 的精度更改为两位小数? @fam-woodpecker 不幸的是,没有。 【参考方案1】:

由于您没有发布所有代码,我只能给您一个笼统的答案。

有几种方法可以得到两位小数。

例如:

num = 1.223362719

print(':.2f'.format(num))

print('%.2f' % num)

print(round(num, 2))

print(f"num:.2f")

您将获得1.22 作为其中任何一个的结果。

------------------更新------------------

感谢您的评论,我已经更新以处理您的问题。

当您的数据 OP 使用 ndarray 时,使用 numpy 可以帮助您。

可以使用data= np.around(a, n)#a为需要十进制处理的数据,n为保留数。

例子:

    import numpy as np
    data= np.around(1.223362719, 2) 

您还将获得1.22 作为结果。

【讨论】:

我认为你最好也添加一个 numpy 解决方案,因为 OP 使用的数据是 ndarray 也可以添加print(f"num:.2f") @LTX 感谢您的帮助。我使用了您更新的代码并成功了 @rickhg12hs 我试过打印但没用 @Cataldirect Format strings f" 应该适用于最新版本的 Python。【参考方案2】:

使用round(num, round_decimal) 例如:

num = 42.44468745

print(round(num, 2))

输出:

42.44

【讨论】:

以上是关于matlab结果输出小数的主要内容,如果未能解决你的问题,请参考以下文章

matlab如何设置小数点后位数?

如何在matlab中得到一个小数小数点后每一位上的数?输出为一个数组。

matlab ssolve函数计算出来的数怎么是分数表示的

matlab如何把小数转换成分数

matlab保留小数点后两位。

matlab如何精确保留工作区内小数位数?