📜  Python|浮点类型及其方法

📅  最后修改于: 2022-05-13 01:54:34.638000             🧑  作者: Mango

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() 是一个类方法。