我刚刚读到C99有double_t,至少应该是double的两倍.这是否意味着它在小数位后给出更精确的数字?超过通常的15位数倍?
其次,如何使用它:仅包括
#include <float.h>
Run Code Online (Sandbox Code Playgroud)
足够?我读到必须将FLT_EVAL_METHOD设置为2以获得long double.这该怎么做?当我使用数值方法时,我希望在不使用任意精度库的情况下获得最大精度.
非常感谢...
号 double_t是至少一样宽为双; 也就是说,它可能与double相同.C99标准中的脚注190使意图明确:
float_t和double_t类型的目的是实现最有效的类型,至少与float和double一样宽.
正如Michael Burr所说,你无法设定FLT_EVAL_METHOD.
如果您想在仅使用C99的任何系统上使用最宽的浮点类型,请使用long double.请注意,在某些平台上它将与double(甚至可能是相同的float)相同.
此外,如果你"使用数值方法",你应该意识到,对于许多(甚至是)数值方法,该方法的近似误差远大于双精度的舍入误差,因此使用更宽的通常没有任何好处类型.当然存在例外情况.你正在研究什么类型的数值方法?
编辑:严肃地说,或者(a)只是使用long double和称呼它一天或(b)花几周的时间来了解浮点数是如何在您定位的平台上实际实现的,以及实际的准确度要求是什么您正在实施的算法.
| 归档时间: |
|
| 查看次数: |
4496 次 |
| 最近记录: |