Python|浮点类型及其方法
Python中的float
类型表示浮点数。浮点数用于表示实数,用小数点分隔整数和小数部分。例如,97.98、32.3+e18、-32.54e100 都是浮点数。
Python浮点值表示为 64 位双精度值。任何浮点数的最大值约为 1.8 x 10 308 。任何大于此的数字都将由Python中的字符串inf
指示。
# Python code to demonstrate float values.
print(1.7e308)
# greater than 1.8 * 10^308
# will print 'inf'
print(1.82e308)
输出:
1.7e+308
inf
浮点数在计算机硬件中表示为以 2 为底的(二进制)分数。例如,十进制小数 0.125 的值为 1/10 + 2/100 + 5/1000,同样,二进制小数 0.001 的值为 0/2 + 0/4 + 1/8。这两个分数具有相同的值,唯一真正的区别是第一个以 10 为基数的分数符号编写,而第二个以 2 为基数编写。
不幸的是,大多数十进制分数不能完全表示为二进制分数。结果是,通常,您输入的十进制浮点数仅与实际存储在机器中的二进制浮点数近似。
float
类型实现了numbers.Real
抽象基类。返回转换为浮点数的表达式。 float
还具有以下附加方法:
float.as_integer_ratio() :返回一对整数,其比率与具有正分母的实际浮点数完全相等。在无穷大的情况下,它会在 Not a number (NaNs) 上引发溢出错误和值错误。
# Python3 program to illustrate
# working of float.as_integer_ratio()
def frac(d):
# Using as_integer_ratio
b = d.as_integer_ratio()
return b
# Driver code
if __name__=='__main__':
b = frac(3.5)
print(b[0], "/", b[1])
输出:
7 / 2
float.is_integer() :如果浮点实例是有限的整数值,则返回 True,否则返回 False。
# Python3 program to illustrate
# working of float.is_integer()
def booln():
# using is_integer
print((-5.0).is_integer())
print((4.8).is_integer())
print(float.is_integer(275.0))
# Driver code
if __name__=='__main__':
booln()
输出:
True
False
True
float.hex() :将浮点数的表示形式返回为十六进制字符串。
# Python3 program to illustrate
# working of float.hex()
def frac(a):
# using float.hex()
a = float.hex(35.0)
return a
# Driver code
if __name__=='__main__':
b = frac(35.0)
print(b)
输出:
'0x1.1800000000000p+5'
float.fromhex(s) :返回由十六进制字符串s 表示的浮点数。 String 可能有前导和尾随空格。
# Python3 program to illustrate
# working of float.fromhex()
def frac(a):
# using a float.fromhex()
a = float.fromhex('0x1.1800000000000p+5')
return a
# Driver code
if __name__=='__main__':
b = frac('0x1.1800000000000p+5')
print(b)
输出:
35.0
注意: float.hex() 是一个实例方法,但 float.fromhex() 是一个类方法。