在python中 float是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中 float是啥意思?相关的知识,希望对你有一定的参考价值。

我就想知道什么是float

float是一种数据类型。

浮点型数据类型,FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用 IEEE(电气和电子工程师协会)格式。浮点类型的单精度值具有 4 个字节,包括一个符号位、一个 8 位 二进制指数和一个 23 位尾数。

由于尾数的高顺序位始终为 1,因此它不是以数字形式存储的。此表示形式为 float 类型提供了一个大约在 -3.4E+38 ~ 3.4E+38 之间的范围。


扩展资料:

相关用法

存储为二进制分数的尾数大于或等于 1 且小于 2。对于 float 和 double 类型,最高有效位位置的尾数中有一个隐含的前导 1,这样,尾数实际上分别为 24 和 53 位长,即使最高有效位从未存储在内存中也是如此。

浮点包可以将二进制浮点数存储为非标准化数,而不使用刚刚介绍的存储方法。“非标准化数”是带有保留指数值的非零浮点数,其中尾数的最高有效位为 0。

通过使用非标准化格式,浮点数的范围可以扩展,但会失去精度。您无法控制浮点数以标准化形式还是非标准化形式表示;浮点包决定了表示形式。

用法举例

如果存储比精度更重要,请考虑对浮点变量使用 float 类型。相反,如果精度是最重要的条件,则使用 double 类型。

浮点变量可以提升为更大基数的类型(从 float 类型到 double 类型)。当您对浮点变量执行算术时,通常会出现提升。此算术始终以与具有最高精度的变量一样高的精度执行。例如,请考虑下列类型声明:

float f_short;double f_long;long double f_longer;f_short = f_short * f_long;

在前面的示例中,变量f_short提升到类型 double 并且与f_long相乘;然后,结果舍入到类型 float,然后赋给f_short。

参考资料来源:百度百科-FLOAT



参考技术A   浮点型(Float)

  Python的浮点数就是数学中的小数,类似C语言中的double。

  在运算中,整数与浮点数运算的结果是浮点数.

  浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

  整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差。
参考技术B float 就是浮点数,看python的manual
float( [x])

Convert a string or a number to floating point. If the argument is a string, it must contain a possibly signed decimal or floating point number, possibly embedded in whitespace. Otherwise, the argument may be a plain or long integer or a floating point number, and a floating point number with the same value (within Python's floating point precision) is returned. If no argument is given, returns 0.0.
Note: When passing in a string, values for NaN and Infinity may be returned, depending on the underlying C library. The specific set of strings accepted which cause these values to be returned depends entirely on the C library and is known to vary.
参考技术C float型数据,浮点型

详细介绍看这里
http://docs.python.org/tutorial/floatingpoint.html
参考技术D 浮点类型变量
也就是小数的意思

python中整数除法和float到int转换之间存在差异的原因是啥?

【中文标题】python中整数除法和float到int转换之间存在差异的原因是啥?【英文标题】:What is the reason for difference between integer division and float to int conversion in python?python中整数除法和float到int转换之间存在差异的原因是什么? 【发布时间】:2020-04-05 19:46:46 【问题描述】:

我最近注意到int() 将浮点数舍入为 0,而整数除法将浮点数舍入为底数。

例如:

-7 // 2 = -4
int(-7/2) = -3

我已阅读说明:

类 int(x, base=10)

返回一个由数字或字符串 x 构造的整数对象,如果没有给出参数,则返回 0。如果 x 是数字,则返回 x.int()。对于浮点数,这将截断为零。

和:

楼层划分

向下舍入到最接近的整数的数学除法。 地板除法运算符是 //。例如,表达式 11 // 4 的计算结果为 2,与 float true 除法返回的 2.75 形成对比。注意 (-11) // 4 是 -3,因为它是向下舍入的 -2.75。参见 PEP 238。

但对我来说,两个类似的操作(浮点除法到整数)应该返回不同的结果似乎不合逻辑。

功能之间的差异有什么动机吗?

谢谢。

【问题讨论】:

相关链接:python-history.blogspot.com/2010/08/… 【参考方案1】:

一致性。

您需要遵循一些非常基本且看似不相关的解释才能理解它。

在学校你学过除以余数。而且你已经做了这样的计算:

8 ÷ 4 = 2 R 0
7 ÷ 4 = 1 R 3
6 ÷ 4 = 1 R 2
5 ÷ 4 = 1 R 1
4 ÷ 4 = 1 R 0
3 ÷ 4 = 0 R 3
2 ÷ 4 = 0 R 2
1 ÷ 4 = 0 R 1
0 ÷ 4 = 0 R 0
        ^------ This is the result of x // 4
            ^-- This is the result of x % 4 (modulo)

稍后,您学习了实数的除法:

8 ÷ 4 = 2.0
7 ÷ 4 = 1.75
6 ÷ 4 = 1.5
5 ÷ 4 = 1.25
4 ÷ 4 = 1.0
3 ÷ 4 = 0.75
2 ÷ 4 = 0.5
1 ÷ 4 = 0.25
0 ÷ 4 = 0.0
        ^--- Note that the number in front of the . is int(x/4)

到目前为止,您可能认为x // 4int(x/4) 总是给出相同的结果。这是你目前对情况的理解。

但是,看看整数除法中发生了什么:R 后面的数字从 3、2、1 循环到 0,然后重新开始:3、2、1、0。R 前面的数字每 4 次递减一步。

那么,接下来会怎样呢?

 8 ÷ 4 =  2 R 0
 7 ÷ 4 =  1 R 3
 6 ÷ 4 =  1 R 2
 5 ÷ 4 =  1 R 1
 4 ÷ 4 =  1 R 0
 3 ÷ 4 =  0 R 3
 2 ÷ 4 =  0 R 2
 1 ÷ 4 =  0 R 1
 0 ÷ 4 =  0 R 0
-1 ÷ 4 = -1 R 3
         ^------ We have to decrease now, because we already have 0 four times
              ^-- We have to restart the cycle at 3

同时,实数除法给了我们:

-1 ÷ 4 = -0.25
          ^----- There is still a 0 in front of the .

这就是为什么-1 // 4 给出-1 而int(-1/4) 给出0。

功能之间的差异有什么动机吗?

好吧,它们有不同的用途:// 是带余数的整数计算的一部分,int() 为您提供实数运算的. 前面的部分。

您决定要计算什么,然后决定在 Python 中使用哪个运算符来获得正确的结果。

好问题。继续学习。

【讨论】:

在实践中,这有一个技巧:如果你有 -1 颗糖果并且你把它送给了 4 个朋友,那么剩下 3 颗糖果。太好了,不是吗?你只需要了解如何拥有-1个糖果。 它确实创造了某种一致性,但据我了解,在 python 3 中添加 // 运算符的动机是为了避免强制使用 int(float)。如果不是这种情况,我应该什么时候选择使用int() 实现,什么时候应该使用// 实现 好吧,那只是一个错误的假设。这没什么不好,只要你测试你的假设是否正确,这在 50% 的情况下可能会失败(至少对我来说是这样)。我在答案中添加了一些关于它的词。 @IsaacDj 你可能想read this 了解“地板除法”运算符背后的故事。 @EricLippert:我不认为这很奇怪。我们不能假设有损操作提供与精确操作相同的结果。用代码说话:Math.Floor(3.23) != -Math.Floor(-3.23) 出于同样的原因-((-x)//y) 不必等于x//y【参考方案2】:

我想说的是,您认为这两个操作在直觉上应该相似是意料之中的,因为在正数上它们的行为相同。但是,如果您查看它们的起源(一个来自数学,另一个来自计算机科学),那么它们的不同行为就更有意义了。

你可以看看后面的概念:

地板除法又名应用于数学除法的地板函数 类型转换/类型转换

================================================ ====================

I)Floor Division 也就是应用于数学除法的 floor 函数

底函数是数学中一个非常成熟的概念。

来自mathworld.wolfram:

地板函数|_ x_ |,也称为最大整数函数或整数值(Spanier 和 Oldham 1987),给出小于或等于 x 的最大整数。地板函数的名称和符号是由 K. E. Iverson (Graham et al. 1994) 创造的

所以地板除法只不过是应用于数学除法的地板函数。行为非常清晰,“数学上精确”。

II)类型转换/类型转换

来自wikipedia:

在计算机科学中,类型转换、类型转换、类型 强制和类型杂耍是改变 从一种数据类型到另一种数据类型的表达式。

在大多数编程语言中,浮点到整数的转换形式是通过舍入规则应用的(因此有一个约定):

向 0 舍入 - 向 0 方向舍入(也称为 截断)

根据IEEE 754的舍入规则。


因此,换句话说,python 中整数除法和浮点到 int 转换之间存在差异的原因是数学问题,这里是 Guido van Rossum 的一些想法(我想我不必介绍他:D) (来自博客Python的历史,文章"Why Python's Integer Division Floors")

这让一些人感到不安,但有一个很好的数学原因。 整数除法运算 (//) 及其兄弟,模 运算(%),一起去满足一个很好的数学 关系(所有变量都是整数):

a/b = q 余数为 r

这样

b*q + r = a 和 0

(假设 a 和 b >= 0)。

【讨论】:

以上是关于在python中 float是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

python浮点数是啥意思

`precision mediump float`是啥意思?

python中int是啥意思

C语言中float是啥意思

C语言中float是啥意思

div+css里面左浮动 右浮动 到底是啥意思??