2

C89 (ANSI C) 标准中有一种数据类型称为long double,但没有任何数学函数支持long double( <math.h>)。例如,sin函数接受一个long参数。

C99 支持long double.

long double我的问题是,当ANSI C 中没有任何数学函数支持时,long double有用吗?

4

2 回答 2

0

是的,如果您希望计算一个超过双精度的表达式,“long double”绝对有用。

一个有趣的附带问题是“'long double '到底是什么”?

答案取决于平台和/或编译器:

http://en.wikipedia.org/wiki/Long_double

于 2012-03-24T21:53:43.483 回答
0

仅仅因为 math.h 不支持某些东西并不意味着您不能自己制作。

存在的类型是一件好事,因为它意味着有一种跨平台的方式来请求具有或多或等于 long 精度的东西。如果它不在某处的语言中,则无法做到这一点(最好的选择是使用结构或长/双精度数组来破解某些东西)。

这些功能只是为了方便;有时可以使用内置的 sin 处理器函数,但有时不能,取而代之的是 sin 函数仅包含一种算法,可以使用标准操作生成答案或查找答案。

如果需要,您可以将目标平台的 sinl 函数从 C99 复制到 C89。这里有一个很大的实现列表:http: //sourceware.org/git/ ?p=glibc.git;a=tree;f=sysdeps/ieee754;hb=HEAD

或者只是坚持C99。

于 2013-03-24T03:03:53.700 回答