Iphone 在目标c中进行计算

Iphone 在目标c中进行计算,iphone,objective-c,floating-point,Iphone,Objective C,Floating Point,我需要一个变量a=6700000^2*(a-b)(2+sinf(a)+s inf(b)),其中a和b是-7到7之间的浮动。我需要浮子能给我的所有精度 a应该是哪种数据类型?sinf是从a和b中获得最佳精度的适当函数吗?a和b应该是弧度还是度 当我发布表达式时,我犯了一个错误,正确的表达式是c=67000000^2*(a-b)(2+sinf(a)+sinf(b)),我的问题是c。“a”和“b”是浮点数,它们作为浮点数传递给我,它们实际上是坐标(纬度和经度),所以这不关我的事。。。我关心的是,当在

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

a
应该是哪种数据类型?
sinf
是从
a
b
中获得最佳精度的适当函数吗?
a
b
应该是弧度还是度


当我发布表达式时,我犯了一个错误,正确的表达式是c=67000000^2*(a-b)(2+sinf(a)+sinf(b)),我的问题是c。“a”和“b”是浮点数,它们作为浮点数传递给我,它们实际上是坐标(纬度和经度),所以这不关我的事。。。我关心的是,当在它们上使用sinf时,是否会丢失任何精度?c应该是哪种类型,这样我就不会失去精度,因为我使用一个长的双变量d来存储多个不同的c变量的和,d作为零返回给我,它不应该(应该是1或2)所以我觉得我在计算c包裹的时候失去了一些精度…我把c当作一个双精度…难道我在计算c的时候失去了一些精度吗


非常感谢您的帮助。

如果您希望在不滚动自己的类型的情况下获得最佳精度,您应该使用
double
而不是
float
。在这种情况下,您可以使用。根据,您应该以弧度为单位传递参数。

我无法告诉您
float
是否适合您的应用程序。如果需要更高的精度,请使用
double
,然后使用
sin()
而不是
sinf()


标准trig函数以弧度表示角度,如果您阅读该函数,您会发现。

如果您不想担心内存问题,您应该使用
双精度
,而不是使用
浮点
。请记住,然后将
sinf()
更改为
sin()
,并使用弧度。

我怀疑
(6700000)^2
是否能很好地发挥作用。@Blender,这只是很小的13个数量级!你的硬盘上有更多的位(可能)。@Ben:
float
只存储
7
double
仅存储
15
@Blender,即十进制浮点,二进制浮点在某些情况下可以携带8位数字。此外,由于浮点使用科学记数法,最终您可以得到比这些大得多的数字,但它们不会精确表示。
long double
double
在iOS中是相同的(都是IEEE-754 binary-64)。