Advertisement

Decimal在Python中的内存组织方式(用于高精度计算)

阅读量:
在这里插入图片描述

decimal与float在存储机制上存在显著差异。其中一种类型(decimal)将其表示形式视为字符串,并采用符号位、小数点位置以及去除小数点后的十进制整数组合作为存储架构。尽管数据区内部仍使用十六进制编码方式,并遵循人类易于理解的十进制系统设计原则;然而,在数值范围扩展方面仍需特别注意:当数值达到1e24时溢出至下一个区间;由于数值范围限制,在处理时需特别注意溢出情况

此前对此一说并不知情, 因此最初采取了直接提升的方式, 随后经历了逐步改进的过程. 回过头反思, 若采用HxD进行修正, 则可事半功倍.

而float是以二进制为基础存储的。

复制代码
    import ctypes,decimal
    
    # for i in range(0x8000000000000000,0x8fffffffffffffff):
    #     d=decimal.Decimal(i)
    #     if i.to_bytes(length=8, byteorder='little')!=ctypes.string_at(id(d)+72,8):brea

全部评论 (0)

还没有任何评论哟~