Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 当浮点数大于其精度时,它叫什么?_C_Floating Point_Precision - Fatal编程技术网

C 当浮点数大于其精度时,它叫什么?

C 当浮点数大于其精度时,它叫什么?,c,floating-point,precision,C,Floating Point,Precision,在单点精度中,有一个23位的有效位,给出一个整数范围(如果我们只存储一个离散的整数值),最大为2^24。指数为8位,范围为2^127。在大数量级时,有一个点开始丢失有效位/尾数的有效位数 这表示类似(2^32+2^8)的数字: 4294967552 0x10000100 0B100000000000000000000000100000000000 将存储为: 指数0b00100000 有效位/尾数0B00000000000000000(1个隐含位) 从精度上损失256 这似乎与所谓的“次正常”数

在单点精度中,有一个23位的有效位,给出一个整数范围(如果我们只存储一个离散的整数值),最大为2^24。指数为8位,范围为2^127。在大数量级时,有一个点开始丢失有效位/尾数的有效位数

这表示类似(2^32+2^8)的数字:
4294967552
0x10000100
0B100000000000000000000000100000000000
将存储为:
指数0b00100000
有效位/尾数0B00000000000000000(1个隐含位)
从精度上损失256

这似乎与所谓的“次正常”数字相反。本质上,有效位中作为整数存储的数字范围比考虑指数时能够存储的数字范围小得多。所以,一旦你到达2^24,你就开始丢失信息(可能我对标准有误解)!当存在有效位但指数小于2^-127时,信息丢失,这似乎与低于正常范围的情况相反

我对IEEE754标准的理解中是否遗漏了一些内容?
如果不是的话,当大的震级数字失去精度(这似乎是低于正常的,可能是“超常的”)时,这种情况叫什么?
为了保持精度,我应该将所有浮点数限制为-(10^7) 编辑 更新了10000010的数字,我还添加了更多的语言来解释我的理解

编辑2 @风向标和风向标是正确的。浮点精度的要点是,一旦我们开始增加幅度,它就会在分数刻度上失去精度,这会在幅度增加基数超过有效位末尾时开始影响整数刻度
0.0000000000000000000001 ->-> 10000000000000000000000.0
我可以理解为什么指数比有效位大得多,以尽可能高的精度表示超小的数字,但对于大的数量级数字,似乎有一整类数字在超过二进制中的23 sig fig时,以大于分数的比例丢失信息。我想知道它们的名称是什么,如果它们甚至有一个名称,例如“超常值”?

当不是一个实数的所有数字都可以用浮点格式表示时,所发生的事情的名称就是简单的“舍入”

表示整数的情况有些特殊,因为在典型的浮点格式中,所有小整数都可以精确表示,特别是没有一个整数太接近零而无法精确表示

然而,由于这个问题暗指的是低于正常的数字,因此更普遍的正确想法是,进入低于正常的领土的双重性正在泛滥。一种方法是,在单精度IEEE 754数字的整个正常范围内,有效精度为24位,当数字太接近零(低于正常范围)时,精度逐渐变小,当溢出(+inf和-inf)时,精度一次降低到0位


由于问题是关于表示整数(参见注释),因此在单精度IEEE 754中,任何整数x,例如-224,请使用二进制或十六进制表示值“100000100”,否则您将完全困惑。二进制浮点表示法的目标不是保留十进制数字。将值转换为单精度时可能会丢失10,或者可能不会丢失,或者可能会丢失10以上。我理解,但只有当我们超过大约7位有效数字的精度时,信息才会丢失,对吗?您是否在寻找“舍入”一词?它是唯一一个出现在脑海中的描述一种情况的方法,在这种情况下,您试图拟合一个无法以浮点格式精确表示的数字。舍入适用于所有值,无论大小,但对于整数,范围为-2^24@lindsaymacvean否,因为数字可能无法用这种格式精确表示。好的,这与数字无关。我只是想找出一个更好的示例十进制数,它在转换为浮点时会丢失信息。为了便于说明,我将以二进制数字的形式发布。2^24四舍五入是所讨论的术语的结果,也就是说,在我看来,单精度浮点不能容纳30位的pi。你怎么称呼它?我投票支持“精度损失”。@CoffeeandCode:Edited。现在它有意义了。