精度和意义。双重范围

时间:2012-06-05 03:34:11

标签: double ieee-754 floating

首先,请允许我承认我是一名经验丰富的程序员,拥有超过10年的编程经验。但是,我在这里提出的问题就是那个问题,从那以后我就一直困扰着我,十年前我第一次拿起一本关于C的书。

以下是关于Python的一本书的摘录,解释了Python浮动类型。

  

使用本机表示浮点数   浮点数的双精度(64位)表示   机器。通常这是IEEE 754,大约提供   精度为17位,指数范围为-308到   这与C中的双重类型相同。

我从未理解的是短语的含义

  

“...提供大约17位精度和一个   指数范围为-308到308 ......“

我的直觉在这里误入歧途,因为我可以理解精确度的含义,但是如何区别于此。我的意思是,如果浮点数可以表示最多17位的值(即最大值为1,000,000,000,000,000,00 - 1),那么指数如何为+308。如果指数为10,则不会产生308位数字;如果指数为2,则不会产生粗略的100位数字。

我希望,我能够表达我的困惑。

此致 Vaid,Abhishek

2 个答案:

答案 0 :(得分:2)

假设我们用两位数的精度写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%内的数字。无论指数有多小或多大,都是如此。

答案 1 :(得分:-2)

Wiki开始,双精度浮点数的精度要求为17位或17 SF。指数可以在-1022到1023的范围内  他们的-308到308似乎是一个错误,或者一个想法没有完全解释。