floating-accuracy

    0热度

    1回答

    哪个表达式更准确,为什么?我认为如果它不是10.0并且对于某个整数k是2^k,那么我们只需要在指数中减去k即可。但有10个,我想不出一种比较它们的方法......

    1热度

    1回答

    以下代码返回99作为输出。 #include<iostream> #include <math.h> using namespace std; int Solve(int a) { return (pow(a,2)); } int main() { int a=10; cout<<Solve(a)<<endl; return 0; } 我

    1热度

    4回答

    我正在写一个函数,它假设已将float“length”传递给它,然后显示一个类似于输出的计时器。浮点“长度”意味着在几分钟内。 当我运行它时,输出应该是:02:03:27:00。相反,它显示02:03:26:100,虽然技术上正确,但它是A)不是它应该如何显示和B)显示在某个地方有一个错误,可能会在未来导致不良结果。 用计算器手动检查后发现所有的数学都是合理的。然后,我评论了格式为零的部分,以查看

    1热度

    1回答

    所以我想知道,如果步长小于1,我如何确保循环中的所有步骤都执行?就拿这个循环,例如: for (float y, x = -1.0; x <= 1.0; x += 0.1) { y = (4*x*x*x) + (3*x*x) + (5*x) - 10; printf("x = %.2f, y = %.2f\n", x, y); } 输出: x = -1.00, y

    1热度

    1回答

    使用不同舍入模式时得到的结果应以特定方式排序时,是否有任何保证(在C99标准和/或IEEE-754中)? 例如,假设f(rm, x)是rm是舍入模式,x是它的参数。我能否认为一个无缺陷的实现应该确保以下不等式? f(FE_DOWNWARD,x) <= f(FE_TONEAREST,x) <= f(FE_UPWARD,x) 举个例子,我的机器下面的代码违背了这一假设(即使使用的是最新的glibc

    2热度

    1回答

    什么是32位 IEEE单精度计算机号码的小数值 10111000111001100110011001100110? 我明白,我必须分裂二进制:1 01110001和11001100110011001100110 1) 0 × 2^7 + 1 × 2^6 + 1 × 2^5 ... 而且 2) 1+1×2^−1+1×2^−2 +0×2^−3 ... 我似乎无法得到最终的十进制结果正确

    0热度

    1回答

    我有自己的unproject函数用于执行屏幕点的反投影。代码如下(写在OpenTK): public static Vector3 UnProject(Point screenLocation, float depth) { int[] viewport = GetViewport(); Vector4 pos = new Vector4(); // Map x

    0热度

    2回答

    我知道浮点计算可能不准确的事实。例如: var x = 100*0.333; 这里x被设置为33.300000000000004,而不是33。这似乎是一个小问题,但如果涉及四舍五入,则会变得严重。例如,Math.ceil(x)将不正确 - 将产生34而不是33。 问题是,我被告知JS在整数和浮点之间没有太大的区别。所以我担心是否有办法确保整体分割是正确的。 JS中整数除法的通常公式似乎是Mat

    1热度

    1回答

    我想到一个比较浮点数的好方法是用浮点数来缩放容差。这是个好主意吗? 此例程需要扩展特殊数量,如NaN,+/- Inf,但它提供了一个基本的想法。 def FloatEq(a, b, ToleranceFactor=1e-6): if a == b: return True c = min(abs(a), abs(b)) return(abs(a-b) < (c*Tol

    -1热度

    2回答

    假设严格不等式一个,X,和ÿ是正IEEE浮点数与 X < ÿ。证明一个 × X < 一个 × ý其中× 表示浮点乘法舍入到最接近的。 天真,你可能认为对于一些一个和X接近Ÿ, 你会得到一个 × X = 一个 × ÿ。事实证明,这个 不可能发生(只要非规格化的数字,infinities和NaN排除在 之外)。 我对一个优雅的证明感兴趣,如果可能的话,还有一本书或纸 这里给出。 TAKE 2:正如Pa