简介:许多朋友询问可以将多少个问题视为Python浮点数。本文的首席CTO笔记开始为您的参考做出详细的答案。我希望这对每个人都会有所帮助!让我们一起看看!
01
“将Python中浮点数的操作精度的准确性限制为32位?”
为什么问这样一个奇怪的问题。存在是合理的~~
提出此问题的原因是,当使用Python在32位MCU上模拟程序时,两者的结果是不同的。
区别在于这一观点,我将找到一种挖掘方法的方法。确定其他可能性的所有可能性,即计算准确性的影响。
MCU的浮动点操作单元为32位,而Python的默认浮点操作为64位(安装64位安装程序包)
浮动点操作的结果如下:
32位浮动点的有效数据位为7位,而上述计算结果显然超过7位。
02
差异已经很明显,因此如何消除这种差异~~
选项一:
使用Round()控制准确性。
不,单个精度和双准确浮点 - 点操作之间的差异超过一个弹性功能,并且有超过800 ~~
选项II:
使用小数模块
这仍然是我的学习计划~~
第三个解决方案:
stackoverflow.com
问题解决了~~
03
使用Numpy模块中的Float32完美解决此问题。
例如~~
结尾
浮点分为浮点和双重,占4,8字节,即32,64位。
在IEEE754标准中,浮点的32位是:符号位(s)1级代码(e)8尾号(m)23。
浮动点变量的范围是根据国际标准IEEE 754确定的。例如,浮动点数的总数,这是数值符号,数字是索引,数字是基本值(尾数字),哪个位是订单代码。根据法规,您可以计算范围。标题文件float的宏变量可以知道值的范围。
扩展信息:
十字订单编号,附加代码徽标“ e”或“ e”,订单代码(只能是整数,可以带来符号)。它的一般形式为e e n(a是十进制数字,n是十进制整数)。该值为A*10,n as:2.1e5(相当于2.1*10的5个步骤),3.7E-2(等于3.7*10 10 10 10 10-2)0.5e7(相当于7 of 0.5*10)
-2.8e-2(等于-2.8*10-2平方),以下不是合法的实际编号345(非确定点)E7(订单代码符号E之前)-5(未打开的代码徽标)53.-E3(负数不正确)2.7E(未打开的代码)。
参考信息来源:百度百科全书浮动数据数据
在计算机的硬件中,浮点数由二进制小数表示。
[python]查看普通副本
0.125
您可以看到1/10+2/100+5/1000,就像二进制十进制的方式相同
[python]查看普通副本
0.001
您可以看到0/2+0/4+1/8。
这两个小数的实际值是相同的。唯一的区别是0.125是十进制表示,而0.001是二进制表示。不幸的是,大多数小数无法通过二进制小数准确地表示,您输入的小数浮点数只能由二进制表示,只能用二进制表示。存储在机器中的浮点。不管您使用多少二进制数,小数0.1不能准确地用二进制十进制代表。这是一个无限的重复小数小数
[python]查看普通副本
0.000110011001111001100110011001100110011001110011 ...
在运行Python的典型计算机中,浮点数的准确性为53位,因此小数为0.1将以以下形式存储
[python]查看普通副本
0.0001100110011001100110011001110011001100111101010
实际上,我们很容易忘记存储存储的数据是原始十进制的近似。
[python]查看普通副本
0.10000000000005555115123125780211815834541015625
这些数字中的大多数不会被人们使用,因此Python仅显示其四所房屋和五个入口的价值
[python]查看普通副本
0.1
在实际情况下,有许多这样的例子可以解释:
[python]查看普通副本
0.1+0.2
0.300000000000004
[python]查看普通副本
回合(2.675,2)
2.67
您可以使用小数模块查看准确的浮点的值。
[python]查看普通副本
从小数进口小数
十进制(2.675)
小数('2.674999999999999982364316059749495321893310546875')))
最后6个小数。
准确性主要取决于尾部部分的数字。
对于Float32(单精度),它表明尾号为23位。除了0的情况外,最小值为2-23,约为1.19*10-7,因此浮点小数零件只能准确到后6位数字。在小数点之前,一位有效数字为7。
以同样的方式,float64(单个精度)末端部分为52位,最小值为2-52,约为2.22*10-16,因此小数点之后,它准确到15位数字,再加上小数点之前的一个。本质
float32和float64可以代表很多值:
浮动点数类型的值可以从小到巨大。浮点点范围的极限值可以在数学包中找到:
常数MATH.MAXFLOAT32表示Float32所能获得的最大值,约为3.4E38。
常数Math.maxfloat64表示Float64可以获得的最大值,约为1.8E308。
Float32和Float64可以分别表示1.4E-45和4.9E-324的最小值。
原因如下:
上述情况主要是因为浮点数实际上保存在计算机中的计算机中,有些是不准确的。
例如:0.1是十进制。被转变为二进制后,它是无限数量的循环:
0.00011001100110011001100111001110011001100110011001100
Python保留了双准确度(64)位,并且将切断多余的位,因此您会看到0.1,但计算机上的实际保留不准确0.1.1。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[Python3]计算高精确浮动 - 点号法
小数模块的“ getContext”和“十进制”方法
getContext()。prec = 2 #settings精度
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在十进制模块中,可以通过整数,字符串或原理构造十个十个对象。如果是浮点的数量,请特别注意浮点数的误差本身,您需要转换浮点首先进入字符串。
当然,尽管精度得到提高,但必须带来绩效损失。在数据要求特别准确的情况下(例如财务解决),这些绩效的损失值得。但是,如果它是一个大型科学计算,则有必要考虑操作效率。一切后,本机浮点绝对比小数对象快得多。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
浮点数和整数的比较
值相等,地址不同
Python的基本数据类型通常分为:数字,字符串,列表,引号,字典和集合。
这些数字还包括整数(整数还包括标准整数,长整数(Python2.7和以前的版本),浮动点类型,复数类型,布尔值类型(Boolean类型仅为两个值)这些数字类型。字符串是序列。
1.数字
数字类型是无法更改的对象。变量变量的数字值是生成/创建新对象。Python支持多种数字类型:
Treed(标准整数和长完整性(Python2.7和以前的类型),布尔值,双 - 精确浮动 - 点类型,十进制浮动 - 点类型,多数。
2.标准整数
INT,标准完整性,大多数32位计算机上的标准整数范围为-2^31至2^31-1,为-2147483648-2147483647。如果在64位计算机中使用了64位编译器,则该系统的inthe标准整数将为64位。
3.布尔
布尔,布尔类型是从python2.3中添加的两个类型和错误类型。对于没有__nozero__方法的对象,默认值为true。
对于值为0的数字,在python中的布尔式类型中,空集(空列表,空元组,空词典等)都是错误的。
布尔(1)
真的
布尔('a')
真的
布尔(0)
错误的
布尔('')
错误的
4.浮点类型
浮点,每个浮点 - 点类型帐户为8个字节(64位),完全遵守IEEE754规范(52m/11e/1s),其中52位数字用于表示底部,使用11位数字来表示索引(可以表达的(可以表示范围约为±10 ** 308.25),剩余位是一个符号。但是,这看起来很完美,但是,实际准确性取决于机器架构的编译器和Python的创建口译员。
浮动点值通常具有小数点和可选后缀E(大写或小写,表明科学计数方法)。一个正(+)或负(+)或负( - )可以表明E与E之间的索引的正和负数索引(可以省略该符号)。
以上是Python Core编程的浮动 - 点(双重精确浮动 - 点类型)的说明。通过Python浮动 - 点类型的默认长度为24个字节。如果超过此范围,它将自动
5.复制类型
复杂在多数中不能单独存在。它们始终形成一个复数,实际数为0.0。复数数是由真实部分和虚拟编号部分组成的。指示虚拟编号的语法:真实+image。
真实和虚拟零件都是漂浮的 - 虚拟编号必须具有后缀J或J。
结论:以上是首席CTO注释给所有人提出的Python浮点的总内容。我希望这对每个人都会有所帮助。如果您想了解更多有关此信息的信息,请记住要收集对该网站的关注。