当前位置: 首页 > 网络应用技术

可以计算多少位浮点数?

时间:2023-03-06 20:55:07 网络应用技术

  简介:许多朋友询问可以将多少个问题视为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浮点的总内容。我希望这对每个人都会有所帮助。如果您想了解更多有关此信息的信息,请记住要收集对该网站的关注。