Py学习  »  Python

Python从入门到放弃——浮点型变量

新机器视觉 • 1 年前 • 216 次点击  

浮点型变量


前言


上一篇文章我们研究了整数类型变量,本次我们来开始研究一下浮点类型变量。





浮点类型


浮点数在计算机编程中扮演着重要的角色。它们是一种特殊的数据类型,用于存储和处理小数或实数。在Python中,浮点数是由小数点分隔的数字组成的。在本文中,我将探讨浮点类型变量的定义、使用以及它们的一些特点。


首先,让我们来看看浮点数变量的定义。在Python中,可以使用以下语法来定义一个浮点变量:


variable_name = 3.14print(variable_name)


最后得到的结果如下图所示:



在上面的例子中,variable_name是变量的名称,而3.14是变量的值。注意,浮点数可以是正数或负数,并且可以包含小数点。


接下来,让我们探讨一些使用浮点类型变量的例子。假设我们要计算一个圆的面积。我们知道圆的面积公式是πr^2,其中π是一个数学常数,约等于3.14,而r是圆的半径。我们可以使用浮点类型变量来存储半径和计算面积的结果。下面是一个计算圆面积的示例代码:


pi = 3.14radius = 5.0
area = pi * (radius ** 2) print(area)


运行结果如下所示:



在上面的例子中,我们定义了一个名为pi的浮点变量,该变量存储了常数π的近似值3.14。然后,我们定义了一个名为radius的浮点变量,该变量存储了圆的半径。接下来,我们使用浮点数的乘法和幂运算,计算圆的面积,并将其存储在名为area的浮点变量中。最后,我们使用print函数将计算结果打印出来。


除了基本的数学计算,浮点类型变量在实际编程中还有许多其他的应用。例如,它们可以用于存储和处理货币值、测量数据、科学计算等。浮点数的范围通常比整数的范围大,因此它们可以表示更大或更小的值。然而,浮点数的精度是有限的,这意味着它们可能无法准确地表示某些十进制数。这是因为计算机内部使用二进制表示浮点数,并且存在舍入误差。因此,在进行关键的精确计算时,我们需要小心处理浮点数。


此外,浮点数还可以表示为特殊值NaN(Not a Number),表示一个无效的或未定义的数值。NaN通常出现在一些非法的数学运算中,比如0除以0。NaN的特点是无法进行比较,任何与NaN进行的比较操作都将返回False。


在Python中,处理浮点数的功能非常强大。Python提供了许多内置函数和模块,用于处理浮点数。这些功能包括数学运算、舍入和格式化等。例如,Python提供了math模块,其中包含了许多数学函数,如sin、cos、sqrt等。另外,Python还提供了round函数来进行舍入操作,可以将浮点数四舍五入到指定的小数位数。此外,Python还提供了format函数来格式化浮点数输出,可以指定输出的精度、宽度和对齐方式等。


总之,浮点数是一种用于表示小数的数据类型,在计算机中以近似的方式存储和处理实数。除了常规的浮点数,还有特殊值如正无穷大、负无穷大和NaN。Python提供了丰富的功能和工具来处理浮点数,包括数学运算、舍入和格式化等。


下面我们来看一下详细的代码


import math
# 浮点数运算a = 1.2b = 2.3c = a + bprint(c)  # 输出:3.5
# 舍入操作d = 3.14159e = round(d, 2)print(e)  # 输出:3.14
# 格式化输出f = 4.56789formatted_f = "{:.2f}".format(f)print(formatted_f)  # 输出:4.57
# 使用math模块进行数学运算g = math.sin(math.pi)print(g)  # 输出:1.2246467991473532e-16
# 特殊浮点数值h = float('inf')i = float('-inf')j = float('nan')print(h, i, j)  # 输出:inf -inf nan



这段代码主要介绍了Python中浮点数的运算和操作。


首先,代码导入了math模块,该模块提供了一系列数学运算的函数和常量。


然后,定义了两个浮点数a和b,进行加法运算,并将结果赋值给变量c。使用print函数打印出c的值,结果为3.5。


接下来,定义了一个浮点数d,并使用round函数将其四舍五入保留两位小数,将结果赋值给变量e。使用print函数打印出e的值,结果为3.14。


然后,定义了一个浮点数f,并使用format函数将其格式化为保留两位小数的字符串形式,将结果赋值给变量formatted_f。使用print函数打印出formatted_f的值,结果为4.57。


接下来,使用math模块的sin函数计算了π的正弦值,并将结果赋值给变量g。使用print函数打印出g的值,结果为1.2246467991473532e-16,这是一个科学计数法的表示方式。


最后,定义了三个特殊的浮点数值:正无穷大、负无穷大和非数值。使用print函数打印出h、i、j的值,分别为inf、-inf、nan。



深入了解浮点数底层


在Python中,float 类型用于表示浮点数,即带有小数部分的数字。虽然Python为程序员提供了高级别的抽象,使得我们不需要关心底层实现的细节,但了解float类型在Python内部如何表示和存储仍然是有益的。


IEEE 754 浮点数标准


Python中的float类型通常遵循IEEE 754标准来表示浮点数。IEEE 754是一个定义浮点数在计算机中如何表示、存储和运算的国际标准。它定义了多种精度的浮点数,包括单精度(32位)和双精度(64位)。Python的float类型通常是双精度(double precision)。


浮点数的构成


一个IEEE 754浮点数由三个部分组成:


符号位(Sign):1位,用于表示正负号(0表示正数,1表示负数)。


指数位(Exponent):对于双精度浮点数,指数位占用11位。它表示了数值的指数部分,并且有一个偏移量(对于双精度是1023)。


尾数位(Mantissa 或 Fraction):对于双精度浮点数,尾数位占用52位。它表示了数值的小数部分(或称为分数部分)。


浮点数的范围与精度


由于指数位和尾数位的位数是固定的,因此浮点数的范围和精度也是有限的。


范围:由于指数位的限制,浮点数有一个最小值(接近但大于0)和一个最大值(有限的)。


精度:由于尾数位的限制,浮点数不能表示所有实数,只能表示一定精度范围内的数。这意味着对于某些操作(如除法),结果可能不是精确的。


Python中的float类型


在Python中,当你创建一个浮点数时(例如x = 3.14),Python会将其存储为一个遵循IEEE 754标准的双精度浮点数。你可以使用sys.float_info来获取有关Python中float类型的信息,包括其精度、范围等。


浮点数的限制


由于浮点数的表示方式和精度限制,它们在某些情况下可能会导致问题:


舍入误差:由于浮点数的精度有限,某些计算可能会导致舍入误差。


表示范围:非常大的数或非常小的数可能无法用浮点数精确表示。


特殊值:浮点数还包括一些特殊值,如正无穷大(float(‘inf’))、负无穷大(-float(‘inf’))和非数字(float(‘nan’))。


浮点数与十进制数的差异


需要注意的是,虽然我们在日常生活中经常使用十进制数,但计算机内部使用二进制数来表示和处理数据。由于二进制数无法精确表示所有十进制小数(如1/3或1/10),因此浮点数的表示和计算可能会受到这种差异的影响。这也是为什么在进行金融计算或需要高精度计算时,通常会使用专门的库(如decimal库)来避免浮点数的舍入误差。



总结


总结起来,浮点类型变量在Python中起到了至关重要的作用。它们用于存储和处理小数和实数,可以进行各种数学运算,并具有一些特殊的特点。在实际编程中,我们需要注意浮点数的精度和舍入误差,并使用适当的函数和方法来处理浮点数。通过熟练掌握浮点类型变量的使用,我们可以更好地进行数值计算和科学编程。


来源:古月居

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/171698
 
216 次点击