Python将浮点数保留指定的位数

Python023

Python将浮点数保留指定的位数,第1张

python 里面专门有一个 round() 函数可以将任意的浮点数或者小数保留指定的位数。

废话不多说了,直接上一个例子。

目标:将 x = 34.4567809278 保留3位小数

结果 34.457

round(x,k) 中 x 为要处理的浮点数, k 指要保留的位数

print(round(x)) #直接返回整数

01

“如将Python中的浮点数运算精度限制到32位?”

为什要提出这么怪异的问题。存在即合理~~

提出这个问题的原因是,在用python模拟32位MCU上的程序时,发现两者的结果有差异

而差异的地方就是重点。 秉持这种观点,我就想办法深挖下去。排除了其他所有的可能,就差计算精度的影响了。

MCU的浮点运算单元是32位的,而Python默认的浮点运算为64位(安装的64 bit安装包)

浮点运算的结果如下:

32位浮点数的有效数据位为7位,而以上计算结果明显超过7位。

02

差异已经很明显了,那怎么消除着这种差异~~

方案一:

使用round()控制精度。

No,单精度与双精度浮点运算差异不止一个round函数,也不止千八百个~~

方案二:

使用decimal模块

这个还在我的学习计划中~~

方案三:

stackoverflow.com

问题解决~~

03

使用numpy模块中的float32完美解决这个问题。

举个例子~~

End