在python中“存储和打印”变量时(“十进制到二进制”和“二进制到十进制”的转换)

在使用float类型的python中

例如:>> a = 0.2

  >> a

  >> 0.2

在上述示例中,将“ 0.2”存储在变量“ a”中时,它将在内部以二进制格式存储为“ 0.0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011”

当尝试打印变量a时,它将二进制转换为十进制(浮点)转换为“ 0.199 999 999 999 999 818 101 059 645 414 352 416 992 187 5”

当“ 0.1 + 0.2-0.3不等于0.0”(不是近似值)时, 在输出中如何将其打印为“ 0.2”?

noa37688 回答:在python中“存储和打印”变量时(“十进制到二进制”和“二进制到十进制”的转换)

以下是使用各种python函数显示的数字

import struct
value=0.2
data = struct.pack('d',value) 
print(data)   # -->  b'\x9a\x99\x99\x99\x99\x99\xc9?'
b'\xcd\xccL>'.hex()  # -->  '9a9999999999c93f'
 bin(0x9a9999999999c93f)      #--> '0b1001101010011001100110011001100110011001100110011100100100111111'
struct.unpack('d',data)  #--> (0.2,)
本文链接:https://www.f2er.com/3097979.html

大家都在问