floating-point-precision

    2热度

    1回答

    我正在做A.I的博士研究。我已经到了必须开始为我的测试平台使用CUDA库的部分。 我以前玩过CUDA,并且对GPGPU的工作原理有了基本的了解,但是我对浮点精度感到困扰。 看看GTX680我看到FP64:1/24 FP32,而特斯拉有完整的FP64 1.31 TFLOPS。我非常清楚一个是游戏卡,另一个是专业卡。 我问的原因很简单:我买不起特斯拉,但我可能会得到两个GTX680。虽然主要目标是拥有

    4热度

    4回答

    我正在尝试使用一些UI按钮将位置移动0.1或-0.1来影响3D模型的翻译。 我的模型位置是一个三维浮点数,所以简单地将0.1f添加到其中一个值会导致明显的舍入误差。尽管我可以使用BigDecimal之类的东西来保持精确度,但我仍然必须将其从浮点数转换回浮点数,并且总会导致愚蠢的数字,导致我的UI看起来像一团糟。 我可以非常漂亮的显示值,但舍入错误只会在更多编辑时变得更糟,并且使我的保存文件难以阅读

    -1热度

    2回答

    给定小数点(103993/33102),我需要在该小数点的小数点后找到50000个数字。 最初我在C++中使用了setprecision(k),但它在小数点后只有17位数。我也试过 sprintf (str, "%.500000f", num) 但结果是一样的。 我需要一个算法,可以解决这个问题,它不会在小数点后的数字四舍五入,即它应该是精确的。

    21热度

    2回答

    作为单元测试的一部分,我需要测试一些边界条件。一种方法接受System.Double参数。 有没有办法取得次小的双重价值? (即将尾数减1个单位值)? 我认为是使用Double.Epsilon,但这是不可靠的,因为它只是从零开始的最小增量,所以不适用于较大的值(即9999999999 - Double.Epsilon == 9999999999)。 那么,什么是算法或代码所需要这样的: NextS

    4热度

    1回答

    根据IEEE Std 754-2008标准,二进制64位双精度浮点格式的指数字段宽度是11位,它由指数偏差1023进行补偿。标准还规定,最大的指数是1023,最小值为-1022。为什么是最大指数不: 2^10 + 2^9 + 2^8 + 2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 - 1023 = 1024 和最小的指数不是: 0 - 1023

    1热度

    1回答

    这是一个微不足道的问题,我只是想知道这里发生了什么。 以下是我的样本数据,我想找到该行最大的stata x1 x2 x2 70001102 70001102 70001102 70001102 70001102 70001102 现在,我用下面的代码找到row max: egen maxi rmax(x1 x2 x3) 然而,在数据表我发现第一行和第二行的rmax是70001

    2热度

    2回答

    在这种情况下(对象 - ,的iOS): float a = 0.99999f; int b = 1000; int c = a + b; 在结果c = 1001。我发现它发生是因为b转换为float(特定于iOS),因此a + b没有足够的精度来处理1000.9999和(为什么?)被四舍五入为较高值。如果a是0.999f,我们得到c = 1000 - 理论上正确的行为。 所以我的问题是为什

    0热度

    1回答

    假设我的计算机使用IEEE 754浮点编码,我不知道什么是它下面的函数返回false的最小数量: constexpr bool test(const unsigned long long int x) { return static_cast<unsigned long long int>(static_cast<double>(x)) == x; }

    1热度

    2回答

    我知道这是一个非常愚蠢的问题,但我希望有人可以提供帮助。 我被迫使用MPIR出于精度原因,所以我必须翻译我的所有C代码。基本上我只需要更高精度的数字。然而,我真的很困惑我的变量使用的数据类型。我明白mpz_t是整数。由于我存储的数字有很多小数位,这显然是不合适的,因为整数只是整数 mpq_t是有理数。因为我认为每个存储的值都不是理性的数字,所以我不认为这是合适的。 mpf_t用于浮点数。由于这具有

    1热度

    1回答

    我试图更好地了解实数行浮点值的分布情况。 我写这个代码计数均匀分布表示的值的范围(-R,R)其中R是的的功率(也与2的幂试过)号: public class Foo { public static void main(String[] args) { for(int i=0; i<24; i++) { int count = 0;