首先,请允许我承认我是一名经验丰富的程序员,拥有超过 10 年的编程经验。然而,我在这里问的问题是自从大约十年前我第一次拿起一本关于 C 的书以来一直困扰着我的问题。
下面是一本关于Python的书的摘录,解释了Python的浮动类型。
浮点数使用本机表示
浮点数的双精度(64 位)表示
机器。通常这是 IEEE 754,它提供了大约
17 位精度和 –308 到范围内的指数
308.这与C中的double类型相同。
我一直不明白这句话的意思
“...提供大约 17 位精度和
指数范围为 –308 到 308 ...”
我的直觉在这里误入歧途,因为我可以理解精度的含义,但范围怎么可能与此不同。我的意思是,如果一个浮点数可以表示最多 17 位的值(即最大 1,000,000,000,000,000,00 - 1),那么指数怎么可能是 +308。如果指数为 10,这不是会产生 308 位数字;如果指数为 2,这不是会产生大约 100 位数字吗?
我希望,我能够表达我的困惑。
问候
阿布舍克·瓦伊德
假设我们以两位数的精度写出 1500。这意味着我们足够精确来区分 1500、1600 和 1400,但不够精确,无法区分 1500、1510 或 1490。区分这些数字需要三位数的精度。
即使我写了四位数字,浮点表示也不一定包含所有这些数字。 1500 是 1.5 * 10^3。在十进制浮点表示中,精度为两位数,仅存储数字和指数的前两位,我将其写为 (1.5, 3)。
为什么“真实”数字和占位符零之间存在区别?因为它告诉我们如何精确地表示数字,即由于近似而损失了其价值的哪一部分。我们可以区分 1500 = (1.5, 3) 和 1500+100 = (1.6, 3)。但如果我们增加指数,我们就无法区分 15000 = (1.5, 4) 和 15000+100 = (1.51, 4)。最好的情况是,我们可以将数字近似到 +/- 10% 的范围内,并具有两位小数的精度。无论指数允许多大或多小都是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)