周虽旧邦,其命唯新
01
“如将Python中的浮点数运算精度限制到32位?”
为什要提出这么怪异的问题。存在即合理~~
提出这个问题的原因是,在用python模拟32位MCU上的程序时,发现两者的结果有差异。
而差异的地方就是重点。秉持这种观点,我就想办法深挖下去。排除了其他所有的可能,就差计算精度的影响了。
MCU的浮点运算单元是32位的,而Python默认的浮点运算为64位(安装的64 bit安装包)
python shell浮点运算的结果如下:
python shell32位浮点数的有效数据位为7位,而以上计算结果明显超过7位。
02
差异已经很明显了,那怎么消除着这种差异~~
方案一:
使用round()控制精度。
No,单精度与双精度浮点运算差异不止一个round函数,也不止千八百个~~
方案二:
使用decimal模块
这个还在我的学习计划中~~
方案三:
stackoverflow.com
问题解决~~
03
使用numpy模块中的float32完美解决这个问题。
numpy.float32举个例子~~
python shellEnd
网友评论