Objective c sqrtf(6)*sqrtf(6)!=6英寸xcode
我试图创建一个软件来显示两个向量之间的角度,当它们等于1,1,2时,它就不起作用了,因此这个向量的模是sqrtf6,它的值是2.449490,应该是2.44948974278318 有没有办法提高这种操作的精度 在我的软件的下一步中,我将执行以下操作:Objective c sqrtf(6)*sqrtf(6)!=6英寸xcode,objective-c,macos,xcode4,sqrt,Objective C,Macos,Xcode4,Sqrt,我试图创建一个软件来显示两个向量之间的角度,当它们等于1,1,2时,它就不起作用了,因此这个向量的模是sqrtf6,它的值是2.449490,应该是2.44948974278318 有没有办法提高这种操作的精度 在我的软件的下一步中,我将执行以下操作: float angle = acos(dot/(modulus1*modulus2)); 如果modules1==module2,那么modules1*modules2=dot,但在某些值上不会发生 我希望我说清楚了 提前感谢,, Gruber
float angle = acos(dot/(modulus1*modulus2));
如果modules1==module2,那么modules1*modules2=dot,但在某些值上不会发生
我希望我说清楚了
提前感谢,,
Gruber如果您想要更高的精度,可以使用double。但是,请注意,浮点数上的==操作的工作方式与整数类型不同。使用ε调整微小差异。如果您想要更高的精度,可以使用double。但是,请注意,浮点数上的==操作的工作方式与整数类型不同。使用ε调整微小差异。上面的文章详细说明了,但要注意舍入错误。使用双64或十进制80/128?上面的文章详细说明了,但要注意舍入错误。使用双64或十进制80/128?对于浮点和整数类型==操作的效果完全相同;当且仅当值相等时,它返回true。区别在于程序员对所涉及的实际值的直觉常常是错误的,因为大多数程序员从来都不想真正理解浮点。@StephenCanon:这就是我的意思。但我想我应该补充一点小但重要的澄清。这里的主要问题是2.4494897和Xcode一直显示2.449490。。。我尝试了所有的数据类型,但也没有成功。我真的很感谢你的帮助。@EltonGruber:你的意思是调试器正在显示2.449490吗?那可能是个错误。尝试打印精确值,并使用足够高精度的说明符。现在,正如我前面所说的,您可能需要使用一些ε来解释浮点表示不精确的事实。@非常感谢您这么快的回答。。。我试图使用NSLog@%Lf,var。对于浮点和整型,==操作的工作原理完全相同;当且仅当值相等时,它返回true。区别在于程序员对所涉及的实际值的直觉常常是错误的,因为大多数程序员从来都不想真正理解浮点。@StephenCanon:这就是我的意思。但我想我应该补充一点小但重要的澄清。这里的主要问题是2.4494897和Xcode一直显示2.449490。。。我尝试了所有的数据类型,但也没有成功。我真的很感谢你的帮助。@EltonGruber:你的意思是调试器正在显示2.449490吗?那可能是个错误。尝试打印精确值,并使用足够高精度的说明符。现在,正如我前面所说的,您可能需要使用一些ε来解释浮点表示不精确的事实。@非常感谢您这么快的回答。。。我试图使用NSLog@%Lf,var。