61得票4回答
NaN的位模式真的与硬件相关吗?

我在阅读Java语言规范中关于浮点NaN值的部分(我很无聊)。一个32位的float具有以下比特格式:seee eeee emmm mmmm mmmm mmmm mmmm mmmm s代表符号位,e代表指数位,m代表尾数位。NaN值被编码为全1的指数位和不全是0的尾数位(否则将为+/-无穷大)...

59得票7回答
双精度 - 小数位数

根据我所了解的,双精度浮点数类型的数据具有约15位小数的近似精度。但是,当我使用一个十进制重复表示的数字(例如1.0/7.0)时,我发现变量保持的值为0.14285714285714285,即17个小数位(通过调试器查看)。 我想知道为什么它在内部被表示为17位,以及为什么总是写明约15位的精度?

59得票3回答
信号NaN的用处是什么?

我最近阅读了一些关于IEEE 754和x87架构的资料。我在编写一些数值计算代码时考虑使用NaN作为“缺失值”,并希望使用 signal NaN能够在不希望继续处理“缺失值”的情况下捕获浮点异常。相反的,我会使用quiet NaN来允许“缺失值”通过计算进行传播。然而,根据(非常有限的)已有文...

54得票4回答
这个浮点数平方根近似值是如何工作的?

我找到了一个相当奇怪但有效的浮点数平方根近似值; 我真的不明白。 有人能解释一下为什么这段代码有效吗?float sqrt(float f) { const int result = 0x1fbb4000 + (*(int*)&f >> 1); return...

54得票3回答
为什么Number.MAX_SAFE_INTEGER是9,007,199,254,740,991而不是9,007,199,254,740,992?

ECMAScript 6的Number.MAX_SAFE_INTEGER,据说是JavaScript在浮点精度方面出现问题之前可以存储的最大数值。然而,这个值加1后必须也能表示为一个Number。 Number.MAX_SAFE_INTEGER 注意:Number.MAX_SAFE_INTE...

54得票4回答
为什么在IEEE754标准中,除以零会得到无穷大的结果?

我很好奇,为什么在 IEEE-754 中,任何非零浮点数除以零的结果都是无限值?从数学角度来看,这是没有意义的。因此,我认为这种操作的正确结果应该是 NaN。 如果 x 是实数,函数 f(x) = 1/x 在 x=0 处未定义。例如,对于任何负数,sqrt 函数都未定义,而 sqrt(-1....

53得票3回答
Java中`Double.MIN_NORMAL`和`Double.MIN_VALUE`之间的区别是什么?

什么是 Double.MIN_NORMAL(Java 1.6中引入)和 Double.MIN_VALUE 的区别?

49得票14回答
32位浮点数转16位浮点数转换

我需要一个跨平台的库/算法,可以在32位和16位浮点数之间进行转换。 我不需要对16位数字进行数学运算;我只需要缩小32位浮点数的大小,以便可以通过网络发送。 我在使用C++。 我知道这样做会失去多少精度,但对于我的应用程序来说没关系。 IEEE 16位格式是很好的选择。

47得票2回答
如何在.NET中将浮点数强制转换为确定性的?

我一直在阅读有关.NET中浮点确定性的内容,即确保相同的代码和输入在不同的计算机上给出相同的结果。由于.NET缺乏像Java的fpstrict和MSVC的fp:strict等选项,共识似乎是使用纯托管代码没有办法解决这个问题。C#游戏AI Wars已经采用定点数学作为解决方案,但这是一个繁琐的...

47得票3回答
iPhone上的Double和Float有何区别?

我刚听说过 iPhone 不能本地执行双精度计算,这使得其速度比常规浮点数慢很多。 这是真的吗?有证据吗? 我对此问题非常感兴趣,因为我的程序需要高精度计算,但我可能不得不在速度和精度之间做出妥协。