36得票3回答
在C/C++中,当通过double进行传输时,float是否保证被保留?

假设遵守 IEEE-754 标准,float 类型在转换成 double 类型时能否保持不变? 换句话说,下面的断言语句是否总是成立?int main() { float f = some_random_float(); assert(f == (float)(double)...

36得票2回答
为什么在Java中负无穷的平方根是正无穷?

我在Java中尝试了两种不同的方法来找平方根:Math.sqrt(Double.NEGATIVE_INFINITY); // NaN Math.pow(Double.NEGATIVE_INFINITY, 0.5); // Infinity 为什么第二种方式没有返回预期的答案,即 NaN(与第一...

35得票5回答
计算机是如何进行浮点运算的?

当我编写以下代码时: ```python 0.1 + 0.2 == 0.3 ``` 它为什么会返回False?cout << 1.0 / 3.0 <<endl; 我看到 0.333333,但当我写下 时...cout << 1.0 / 3.0 + 1....

35得票2回答
如何检查C++编译器是否使用IEEE 754浮点标准

我想问一个跟这个问题相关的问题,该问题已通过检查编译器使用标准来很好地回答了。但是这仅适用于C语言。在C++中是否有相同的方法? 我不想将浮点类型转换为文本或使用某些相当复杂的转换函数,我只需要进行编译器检查。如果您知道这样的兼容编译器列表,请发布链接。我找不到它。

34得票3回答
在进行浮点数除法时,将其转换为双精度再返回是否会提高准确性?

以下两者有何不同之处?float f1 = some_number; float f2 = some_near_zero_number; float result; result = f1 / f2; 而且:float f1 = some_number; float f2 = some_ne...

32得票3回答
在Scala中,为什么NaN不能被模式匹配捕获?

我的方法如下: def myMethod(myDouble: Double): Double = myDouble match { case Double.NaN => ... case _ => ... } IntelliJ调试器显示NaN,但我的模式匹配未...

32得票4回答
如何对浮点数进行银行家舍入?

关于IEEE-754单精度浮点数,如何执行四舍五入并将中间值舍入为所需位置上最接近的偶数数字(默认和迄今为止最常见的模式)? 基本上,我们有保护位、舍入位和粘合位。如果我们将它们组成一个向量并称之为GRS,则以下规则适用: 如果 G = 0,则向下舍入(不进行任何操作) 如果 G=1 并...

31得票1回答
现代C编译器中__STDC_IEC_559__的状态是什么?

C99增加了一个宏__STDC_IEC_559__,可用于测试编译器和标准库是否符合ISO/IEC/IEEE 60559(或IEEE 754)标准。 根据这个问题的答案: how-to-check-that-ieee-754-single-precision-32-bit-floating-...

29得票3回答
获取下一个最小的双精度浮点数。

在单元测试中,我需要测试一些边界条件。一个方法接受一个 System.Double 参数。 有没有办法获取 比当前值略小 的双精度浮点数?(即将尾数减少1个单位值)? 我考虑使用 Double.Epsilon,但是这种方法不可靠,因为它只是从零开始的最小增量,所以对于更大的值(即 9999...

28得票3回答
为什么不会出现“除以零”或任何其他异常?

我有一个double[]数组,正在执行一个LINQ操作:MD = MD.Select(n => n * 100 / MD.Sum()).ToArray(); 在某些情况下,MD 的所有元素都是 0,则 Sum 也为零。然后 0 * 100 = 0 / 0,但它并没有引发除以零或任何异常。...