floating-point相关内容
刚刚,GCC 4.6.0与 libquadmath 一起出现。不幸的是,GNU支持Fortran,但不支持C或C ++(所有的都包括.so)。我没有找到一种方法在C ++中使用这些新功能,但是,GNU C确实支持 __ float128 类型的保证四重精度浮点。 GNU C似乎不支持 libquadmath 中的数学函数,例如 fabsq (绝对值, q 作为quad的后缀)。 函数在C +
..
我最近在IEEE 754和x87架构上阅读了很多。我正在考虑使用NaN作为一个“缺失值”在一些数字计算代码我正在努力,我希望使用信号 NaN将允许我捕获浮点异常在那里我不想继续“缺失值”。相反,我将使用 quiet NaN来允许“缺失值”通过计算传播。然而,信号NaNs不工作,因为我认为他们将基于(非常有限的)文件存在他们。 这里是我所知道的所有这些使用x87和VC ++): _EM_
..
这是一个问题,这让我完全不知道过去几个小时... 我有一个方程硬编码在我的程序: double s2; s2 = - (0 * 13)/ 84 + 6 / 42-0 / 84 + 24/12 +(6 * 13)/ 42; 每次运行程序时,计算机都输出3作为答案,但是做数学更进一步,在将方程输入Matlab之后,我也得到答案4.这里是怎么回事? 我可
..
我在添加三个浮点值并将其与1比较时遇到了问题。 cout
..
在C ++中,用于将浮点数据类型转换为整数的不同技术有哪些? #include using namespace std; struct database { int id,age; float salary; }; int main() { struct database employee; employee.id = 1; empl
..
我目前正在使用C ++实现一个哈希表,我想为浮动创建一个哈希函数... 我要处理浮点数整数通过填充十进制数字,但是我意识到,我可能达到溢出与大数字... 有一个很好的方法来散列浮点数? 你不必直接给我函数,但我想看看/理解不同的概念... 注意: 我不需要它真的很快, 我看过浮动广告不应该被哈希处理,因为计算的速度,有人可以确认/解释这个,并给我其他原因浮动不应
..
例如, 我在我的C ++中尝试了所有类型的Round,我没有将数字四舍五入到某些小数位。例如,Round(x,y)将x舍入为y的倍数。所以Round(37.785,0.01)应该给你37.79而不是37.78。 我重新打开此问题,要求社群提供帮助。问题是如何解决这个问题呢? $ b(b) 问题是如何解决这个问题? $ b 这个 round()for C ++中的解决方案 “
..
C ++常见问题解答“[29.17]为什么我的浮点数比较无效? “建议这种平等测试: #include / * for std :: abs(double)* / inline bool isEqual(double x,double y) { const double epsilon = / *一些小数字1e-5 * /; return std :: ab
..
在C ++中使用NaN的最好方法是什么? 我发现 std :: numeric_limits和 std :: numeric_limits :: signaling_NaN()。我想使用 signaling_NaN 表示未初始化的变量,如下所示: double diameter = std :: numeric_limits
..
这个主题在StackOverflow上出现了很多次,但我相信这是一个新的。是,我已阅读 Bruce Dawson的文章和
..
为什么需要放置3.14f而不是3.14来禁用所有这些警告? 这是一个一致的原因吗? 解决方案 这是C ++(和C)浮点文字的类型为double,如果您需要它们为浮点型,则使用 f 后缀。似乎没有任何明确说明的原因,为什么,但我猜想它是a)与C兼容,和b)精度和存储之间的权衡。 2.13.3浮动文本浮动文本的类型 是double,除非后缀明确指定了 。 后缀f和F指定float
..
为什么在C ++中将 0f 视为浮点文本? #include using namespace std; int main(){ cout
..
在长时间搜索性能错误后,我阅读了关于非正规浮点值。 很显然,反规范化的浮点值可能是一个主要的性能问题,说明在这个问题: 为什么要将0.1f改为0会使性能降低10倍? 我有一个英特尔酷睿2双核,我正在使用gcc编译,使用 -O2 。 那么我该怎么办?我可以以某种方式指示g ++避免反常值吗? 如果没有,我可以以某种方式测试一个 float 是否正常? 解决方案 您可
..
在C ++ (或者也许只有我们的编译器VC8和VC10) 3.14 是双字面值和 3.14f 是一个浮点文字。 现在我有一个同事说: 我们应该使用float-literals作为float计算,double-literals用于double计算,因为这可能会影响在计算中使用常量时计算的精度。 具体来说,我的意思是: double d1,d2 ; float f1,f2
..
可能重复: round()for C ++ 因此,当我做 $ 时, b $ b int y =(int)x; y = 54而不是55! 这困惑了我很长时间。如何让它正确轮? 解决方案 在投放之前添加0.5(如果x> 0)或减去0.5(如果x float x = 55; // stored as 54.999999 ... x
..
我有以下变量: double dblVar1; double dblVar2; 它们可能具有大值,但小于 double 最大。 我对上述变量,如加法,乘法和幂,有各种算术: double dblVar3 = dblVar1 * dblVar2; double dblVar4 = dblVar1 + dblVar2; double dblVa
..
我正在阅读“加速C ++”。我发现一个语句“有时 double 的执行速度比C ++中的 float 更快。在读完句子后,我对 float 和 double 工作感到困惑。请向我解释这一点。 解决方案 取决于本机硬件的功能。 如果硬件实现double(像x86那样),那么通过将float扩展到这里来模拟float,并且转换会花费时间。 如果硬件仅实现float,那么使用doub
..
那么,如何打印一个double到一个流,所以当它被读入你不会失去精度? 我试过: std :: stringstream ss; double v = 0.1 * 0.1; ss :: digits10)> u;
..
这是我在最近的采访中提出的一个问题,我想知道(我实际上并不记得数值分析的理论,所以请帮助我:) 如果我们有一些函数累积浮点数: std :: accumulate v.begin(),v.end(),0.0); v 是 std :: vector 。 ? 我怀疑排序的数字会以升序排列使数字错误减少,但很遗憾,我无法自己证明。 PS 解决方案 你
..
请考虑以下代码: #include #include int main(){ int i = 23; int j = 1; int base = 10; int k = 2; i + = j * pow(base,k); std :: cout
..