关于C ++演算的精度

时间:2011-10-24 20:13:14

标签: c++ floating-point precision calculus

我已经获得了一个原型函数,可以在C ++中进行一些微积分(伽马函数的积分),我需要将它转换为C语言。作者在每个微积分中使用后缀为f的浮点变量。像这些句子......

float a1=.083333333f;
float vv=dif*i/1.414214f;

该程序通过将一些变量相乘来在许多行上使用截断系列。 我的问题是......如果我使用双精度变量,我不会更精确吗?为什么在这种情况下需要sufix? 提前谢谢!

2 个答案:

答案 0 :(得分:0)

使用双精度可以获得更高的精度,并且在C / C ++中不需要任何特殊后缀。所以,你的代码看起来像

  double a1=.083333333;
  double vv=dif*i/1.414214;

此外,如果你愿意,你可以自由地使用更准确的浮点文字...所以添加更多“3”并将“1.414214”扩展到你内心的内容。但请记住,即使双打也不完全准确。

答案 1 :(得分:0)

在现代系统中,

float是32位浮点类型。 在现代系统中,double是64位浮点类型。

浮点数的精度远小于64位浮点数,但对速度仍然非常有用,因为它占用较少的ram字节。

现在使用64位系统,浮点数和双精度数之间的差异要小得多,但在过去,它们可能真的不同。

你总是要在性能和精度之间找到一个平衡点:双精度和浮点数之间的选择就是这样:你想要高精度还是低精度但性能更好?

在3D游戏中我们通常使用float,在微积分应用中我们通常使用double。

看看double的精度是否适合你,如果没有,我建议你在C ++库中搜索具有不确定精度的数字,但是,继续我们关于性能的讨论,这个对象的性能与本机相比真的很糟糕双倍或漂浮。