我得到了一个原型函数,可以在 C++ 中进行一些微积分(伽马函数的积分),我需要将它转换为 C 语言。作者在每个微积分中都使用了后缀为 f 的浮点变量。比如这些句子...
float a1=.083333333f;
float vv=dif*i/1.414214f;
该程序通过将其中一些变量相乘来在多行上使用截断的序列。我的问题是......如果我使用双精度变量,我不会得到更高的精度吗?为什么在这种情况下可能需要后缀?提前致谢!
我得到了一个原型函数,可以在 C++ 中进行一些微积分(伽马函数的积分),我需要将它转换为 C 语言。作者在每个微积分中都使用了后缀为 f 的浮点变量。比如这些句子...
float a1=.083333333f;
float vv=dif*i/1.414214f;
该程序通过将其中一些变量相乘来在多行上使用截断的序列。我的问题是......如果我使用双精度变量,我不会得到更高的精度吗?为什么在这种情况下可能需要后缀?提前致谢!
使用双精度可以获得更高的精度,并且在 C/C++ 中不需要任何特殊的后缀。所以,你的代码可能看起来像
double a1=.083333333;
double vv=dif*i/1.414214;
此外,如果您愿意,您可以自由使用更准确的浮点文字......所以添加更多“3”并将“1.414214”扩展为您的心脏内容。但是请记住,即使双打也不是完全准确的。
在现代系统中,浮点数是 32 位浮点类型。在现代系统中,double 是 64 位浮点类型。
浮点数的精度远低于 64 位浮点数,但对于速度仍然非常有用,因为它占用的 RAM 字节更少。
现在使用 64 位系统,float 和 double 之间的差异不那么明显了,但在过去,它们可能真的不同。
你总是要在性能和精度之间找到一个权衡:double和float之间的选择正是这样:你想要高精度还是低精度但更好的性能?
在 3D 游戏中我们通常使用浮点数,在微积分应用程序中我们通常使用双精度数。
看看 double 的精度是否适合你,如果不适合,我建议你在 C++ 库中搜索具有 abritrary 精度的数字,但是,为了继续我们关于性能的讨论,与原生 double 或 float 相比,这个对象的性能真的很差.