在目标c进行计算

时间:2012-01-02 22:56:34

标签: iphone objective-c floating-point

我需要一个变量a = 6700000^2 * (a - b) (2 + sinf(a)+ s inf(b)),其中ab是-7到7之间的浮点数。我需要浮点数可以给我的所有精度。

a应该是哪种数据类型? sinf 是否能够从ab中获得最佳精确度? ab应该是弧度还是度数?


当我发布表达式时,我犯了一个错误,正确的表达式是c = 67000000 ^ 2 *(ab)(2 + sinf(a)+ sinf(b)),我的问题是c。“a”而且“b”是花车,它们作为花车传递给我,它们实际上是坐标(纬度和经度),所以这不是我关心的......我担心的是当他们使用sinf时我会失去任何精确度吗?哪个类型应该是这样我不会失去精度因为我使用一个长双变量d来存储多个不同c变量的总和,并且d返回给我为零,它不应该(可能是关于1或2)因此我在计算c包时失去了一些精确度...我使用c作为双重...可能是因为我在计算c时会失去一些精度吗?

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:3)

我无法告诉你float对你的申请是否足够好。如果您需要更高的精确度,请使用double,然后使用sin()代替sinf()

标准触发功能以弧度为单位,您会发现是否阅读了relevant documentation

答案 1 :(得分:1)

如果您不想担心内存问题,则应使用float而不是double。请务必将sinf()更改为sin()并使用弧度。

答案 2 :(得分:0)

如果您想要在不滚动自己类型的情况下获得最佳精确度,则应使用double而不是float。在这种情况下,您只需使用sin(3)即可。根据{{​​3}},您应该以弧度传递参数。