既然浮点数可以表示所有整数数值Python语言为何要同时提供整数和浮点数两种数
2个回答
展开全部
python中的整形和浮点数从底层实现来说就是不一样的。python的整形根据数值大小,可以动态对应C语言的int(4字节)和long(8字节),浮点型对应C语言的double(8字节)
在使用浮点数表示整数时,有可能出现精度丢失的现象。可以跑一下下面这个demo:
import sys
a = sys.maxsize / 2
b = float(sys.maxsize)
print(a, b)
for i in range(0, 100000000):
a += 1
b += 1
print(a , b)
(运行时间可能较长)运行结果如下:
可见浮点数直接丢掉了这一个亿的结果,如果是用来算钱数。。啧啧。。。
究其原因,在于浮点数在内存中的表示形式遵循IEEE 754 标准,原理分析可以参考其他资料。Python的浮点数损失精度问题——程序员修炼之路
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询