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结果输出小数的主要内容,如果未能解决你的问题,请参考以下文章