【问题标题】:sin v/s sinf function in CC中的sin v / s sinf函数
【发布时间】:2010-05-15 20:26:56
【问题描述】:

我试图在我的 C 程序中使用 sinf 函数,但它在 MSVC 6.0 下给我一个未定义的引用错误,但 sin 工作正常。

这让我很想知道sinsinf 之间的区别。

sinsinf 之间的逻辑区别是什么?

如何实现我自己的sinf 功能?

【问题讨论】:

  • 使用浮点函数计算正弦是一个sinf。

标签: c math visual-c++ floating-point trigonometry


【解决方案1】:

sin 接受一个双精度并返回一个双精度 - sinf 接受一个浮点数并返回一个浮点数。

换句话说,sin 是双精度,sinf 是单精度。

如果您使用的是没有 sinf 的旧编译器,您可以将其实现为:

#define sinf(x) (float)sin((double)(x))

【讨论】:

    【解决方案2】:

    sin 接受一个双精度并返回一个双精度,由 ANSI C 定义。sinf 不是。

    【讨论】:

    • sinf() 在 C89 中不是标准的。它 C99 中的标准。
    【解决方案3】:

    sinf() 在 C99 中被添加到 C 中,Microsoft Visual C++ 并不完全支持(即便如此,Visual C++ 6 是在 C99 标准化之前发布的)。

    您可以使用sin() 函数,它接受doublesinf() 接受float)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2021-11-26
      • 2015-04-05
      • 2015-09-13
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多