如果你对浮点数的底层存储格式不了解,请猛击:小数在内存中是如何存储的,揭秘诺贝尔奖级别的设计(长篇神文)
Python 中的小数有两种书写形式:aEn 或 aen
a 为尾数部分,是一个十进制数;n 为指数部分,是一个十进制整数;E
或e
是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 a×10n。f1 = 12.5 print("f1Value: ", f1) print("f1Type: ", type(f1)) f2 = 0.34557808421257003 print("f2Value: ", f2) print("f2Type: ", type(f2)) f3 = 0.0000000000000000000000000847 print("f3Value: ", f3) print("f3Type: ", type(f3)) f4 = 345679745132456787324523453.45006 print("f4Value: ", f4) print("f4Type: ", type(f4)) f5 = 12e4 print("f5Value: ", f5) print("f5Type: ", type(f5)) f6 = 12.3 * 0.1 print("f6Value: ", f6) print("f6Type: ", type(f6))运行结果:
f1Value: 12.5
f1Type: <class 'float'>
f2Value: 0.34557808421257
f2Type: <class 'float'>
f3Value: 8.47e-26
f3Type: <class 'float'>
f4Value: 3.456797451324568e+26
f4Type: <class 'float'>
f5Value: 120000.0
f5Type: <class 'float'>
f6Value: 1.2300000000000002
f6Type: <class 'float'>
12.3*0.1
的计算结果很明显是 1.23,但是 print 的输出却不精确。这是因为小数在内存中是以二进制形式存储的,小数点后面的部分在转换成二进制时很有可能是一串无限循环的数字,无论如何都不能精确表示,所以小数的计算结果一般都是不精确的。有兴趣的读者请猛击下面的链接深入学习:
本文链接:http://task.lmcjl.com/news/9105.html