41得票10回答
根据给定精度,评估两个双精度浮点数是否相等,而不是在固定容差范围内。

我正在运行 NUnit 测试来评估一些已知的测试数据和计算结果。这些数字是浮点双精度,因此我不期望它们完全相等,但我不确定如何在给定精度下处理它们是否相等。 在 NUnit 中,我们可以使用固定公差进行比较:double expected = 0.389842845321551d; doub...

7得票3回答
Python类与整数仿真

以下是一个示例: 给定以下示例: class Foo(object): def __init__(self, value=0): self.value=value def __int__(self): return self.value ...

10得票5回答
精确的第n次方根

我正在寻找Python的N次方根函数/算法,但在你回答之前:不能是整数根,谢谢! 我在哪里可以获得至少编程一个产生精确的浮点数/十进制数的N次方根函数的指南? 这样的函数对于root(125, 1756482845)不会返回1或0(第一个参数是数字,第二个是根深度(或其他))。 编辑:所以,...

39得票6回答
浮点运算是否稳定?

我知道浮点数有精度问题,小数点后的数字并不可靠。 但是如果用来计算这个数字的方程式相同,那会怎样呢?我能否假设结果也会相同? 例如,我们有两个浮点数x和y。我们能否假设机器1中的结果x/y与机器2中的结果相同?即==比较将返回true。

12得票1回答
R中的极小数算术运算

我正在尝试处理一些概率值非常小的问题,这可能会导致一些困难。例如:probs <- c(4.225867e-03,3.463125e-04,2.480971e-05,1.660538e-06,1.074064e-07,6.829168e-09,4.305051e-10,2.702241e...

18得票5回答
我们是否应该使用*相对误差*来比较浮点数的相等性?

到目前为止,我看到了很多关于浮点数相等性的帖子。对于一个像“我们应该如何判断x和y是否相等?”这样的问题,标准答案是:abs(x - y) < epsilon 其中epsilon是一个固定的小常数。这是因为“操作数”x和y通常是某些计算的结果,其中涉及舍入误差,因此标准等号运算符==并不...

62得票4回答
如何强制GCC假定浮点表达式为非负数?

有些情况下你知道某个浮点表达式肯定是非负的。例如,当计算向量长度时,我们会这样做:sqrt(a[0]*a[0] + ... + a[N-1]*a[N-1])(注意:我知道 std::hypot,但这与问题无关),而根号下的表达式显然是非负的。然而,GCC为sqrt(x*x)生成了以下汇编代码:...

13得票7回答
将双精度数组转换为单精度浮点数数组。

我有一个double[][]数组,想要将其中一行转换成float[]数组。起初尝试强制类型转换失败后,我寻找了其他方法。 我在stackoverflow上找到了一种优雅的解决方案,可以将Object[]转换为String[],如果我将Object[]转换为float[]也同样适用。 所以:...

198得票6回答
为什么Double.MIN_VALUE不是负数?

有人能解释一下为什么Double.MIN_VALUE实际上不是Double可以取到的最小值吗?它是一个正数,而Double当然可以是负数。 我明白它为什么是一个有用的数字,但与Integer.MIN_VALUE相比,它似乎是一个非常不直观的名称。将其称为Double.SMALLEST_POS...

42得票2回答
从整数到浮点数再返回时,符号会发生变化。

请考虑以下代码,它是我的实际问题的SSCCE:#include <iostream> int roundtrip(int x) { return int(float(x)); } int main() { int a = 2147483583; int ...