Tag: 精度

什么是C ++的最佳(速度)任意精度库?

我需要可用于C ++的最快的库。 我的平台将是x86和x86-64,它支持浮点。

matlab和c与cos函数不同

我有一个在matlab中实现的程序和c中的相同程序,结果不同。 我有点困惑的是cos函数没有返回完全相同的结果。 在这两种情况下,我使用相同的计算机,Intel Core 2 Duo和8字节双数据类型。 为什么结果不同? 这是测试: c: double a = 2.89308776595231886830; double b = cos(a); printf(“a = %.50f\n”, a); printf(“b = %.50f\n”, b); printf(“sizeof(a): %ld\n”, sizeof(a)); printf(“sizeof(b): %ld\n”, sizeof(b)); a = 2.89308776595231886830106304842047393321990966796875 b = -0.96928123535654842068964853751822374761104583740234 sizeof(a): 8 sizeof(b): 8 matlab: a = 2.89308776595231886830 b = cos(a); fprintf(‘a = %.50f\n’, a); fprintf(‘b = %.50f\n’, […]

C-浮点精度

我有一个程序: int main() { float f = 0.0f; int i; for (i = 0 ; i < 10 ; i++) f = f + 0.1f; if (f == 1.0f) printf("f is 1.0 \n"); else printf("f is NOT 1.0\n"); return 0; } 它始终打印f is NOT 1.0 。 我知道这与C中的浮点精度有关。但我不确定它到底搞砸了。 有人可以解释一下为什么不打印另一条线?

C ++的精确十进制数据类型?

PHP有一个十进制类型,它没有浮点数和双精度的“不准确性”,因此2.5 + 2.5 = 5而不是4.999999999978325或类似的东西。 所以我想知道C或C ++是否有这样的数据类型实现?

C ++浮点精度

可能重复: 浮点不准确的例子 double a = 0.3; std::cout.precision(20); std::cout << a << std::endl; 结果:0.2999999999999999889 double a, b; a = 0.3; b = 0; for (char i = 1; i <= 50; i++) { b = b + a; }; std::cout.precision(20); std::cout << b << std::endl; 结果:15.000000000000014211 所以..’a’比它应该小。 但是,如果我们采取’a’50次 – 结果会比它应该更大。 为什么是这样? 如何在这种情况下得到正确的结果?

代表双打中的整数

双精度数(给定数量的字节,具有合理的尾数/指数平衡)是否总能完全精确地保持无符号整数范围的一半,即该字节数的一半? 例如,8字节双精度可以完全精确地保持四字节无符号整数的范围吗? 这将归结为如果一个双字节浮点数可以保持一个字节unsigned int的范围。 一个字节的unsigned int当然是0 – > 255。