社区维基问题的接受答案:What are best practices that you use when writing Objective-C and Cocoa?表示iPhone不能进行双精度数学运算(或者更确切地说,它们可以,但只能在软件中模拟。)不幸的是,它提供的2009年链接作为参考:Double vs float on the iPhone直接与该陈述相矛盾。这些都是旧的,在3GS刚刚问世的时候写的。
那么最新的arm7架构的故事是什么?我是否需要担心第二个链接引用的'thumb'编译器标志?我可以安全地使用double
个变量吗?对于386SX和DX以及“数学协处理器”的黑暗日子,我有令人讨厌的闪回。告诉我它是2012年,我们继续前进。
答案 0 :(得分:6)
在所有iPhone中,没有理由不支持双精度。它们都使用Cortex-A8架构和cp15协处理器(支持IEEE浮点和硬件双重计算)。
http://www.arm.com/products/processors/technologies/vector-floating-point.php
所以是的,您可以安全地使用双打,它不应该是在iPhone上模拟的软件。 虽然这是在硬件中完成的,但执行双重数学算术与单一(浮点)可能仍需要更多周期。除了使用double之外,我还会检查以确保精度适合您的应用程序。
作为旁注,如果处理器支持NEON指令集,则可以比使用协处理器更快地计算双精度和浮点数。
http://pandorawiki.org/Floating_Point_Optimization#Compiler_Support
编辑:虽然VFP和Neon是ARM Core的可选扩展,但大多数cortex-A8都有它们,所有这些都在iPhone和iPad中使用。