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)。