为什要提出这么怪异的问题。存在即合理~~
提出这个问题的原因是,在用python模拟32位MCU上的程序时,发现两者的结果有差异。
而差异的地方就是重点。 秉持这种观点,我就想办法深挖下去。排除了其他所有的可能,就差计算精度的影响了。
MCU的浮点运算单元是32位的,而Python默认的浮点运算为64位(安装的64 bit安装包)
浮点运算的结果如下:
32位浮点数的有效数据位为7位,而以上计算结果明显超过7位。
02
差异已经很明显了,那怎么消除着这种差异~~
方案一:
使用round()控制精度。
No,单精度与双精度浮点运算差异不止一个round函数,也不止千八百个~~
方案二:
使用decimal模块
这个还在我的学习计划中~~
方案三:
stackoverflow.com
问题解决~~
03
使用numpy模块中的float32完美解决这个问题。
举个例子~~
End
python求和方法如下:
一、整数求和
Python内的整数求和非常简单,就和平时日常中做的数学计算是一样的过程。使用算术运算法把要求和的整数相加即可。
二、列表内的元素进行求和
有时候需要进行求和的数字是存放在一个或者多个列表之中的,那么列表中的元素进行求和方法如下:
(1)单个列表求和
(2)多个列表求和
三、浮点数求和
因为python之中浮点数计算的特性,在涉及到小数点后多位计算时会出现一些很小的偏差。为了弥补这个偏差,就需要使用外部的库来解决。
关于Python概述:
由荷兰数学和计算机科学研究学会的Guido van Rossum于1990年代初设计,作为一门叫做ABC语言的替代品;Python提供了高效的高级数据结构,还能简单有效地面向对象编程;目前Python是一门计算机编程语言。
Python最初是用来编写自动化脚本,随着不断的发展,目前Python被用于大型项目的开发。目前Python是一门计算机编程语言,是直接面向对象动态语言,同时也是一种高级语言。