Техническое примечание TN2293

Поддержка нестандартных чисел

iOS 6 поддерживает использование нестандартных чисел для JavaScript в Ваших приложениях. Большинство приложений не должно будет включать эту поддержку. Если Ваше приложение должно вычислить числа, приближающиеся к нулю, можно теперь выбрать в поддерживать нестандартные числа — при знании, что математика точна и придерживается промышленных стандартов. Safari на iOS 6 придерживается спецификации плавающей точки IEEE 754, таким образом, веб-страницы, просматриваемые в Safari автоматически, поддерживают нестандартные числа.

Что такое нестандартные числа?
Почему я должен поддерживать нестандартные числа?
Есть ли какие-либо последствия поддержки нестандартных чисел?
Как я включаю поддержку нестандартных чисел?
Дополнительные материалы для чтения
История версии документа

Что такое нестандартные числа?

Нестандартные числа являются значениями с плавающей точкой двойной точности, которые являются очень близко к нулю, но не равны нулю. Без поддержки нестандартных чисел процессор обрабатывает числа, которые достаточно близки для обнуления как сам нуль. Результатом является число, которое незначительно менее точно, чем он использовал бы нестандартные числа.

Почему я должен поддерживать нестандартные числа?

Необходимо рассмотреть поддерживающие нестандартные числа если приложение:

Есть ли какие-либо последствия поддержки нестандартных чисел?

Включение поддержки нестандартных чисел происходит на уровне процессора. После того, как это будет включено, весь код плавающей точки двойной точности, работающий в Вашем приложении, начнет использовать нестандартные числа, не просто JavaScript. Если код в Вашем приложении воздействует на числа двойной точности, которые являются очень близко к нулю, это возможно (несмотря на то, что вряд ли), что изменение этих настроек будет влиять на поведение собственного кода Вашего приложения.

Как я включаю поддержку нестандартных чисел?

Для поддержки нестандартных чисел включайте следующий код в приложение main.m файл:

Перечисление 1  , Разрешающее поддержку нестандартных чисел

#import <fenv.h>
#import <TargetConditionals.h>
#import <UIKit/UIKit.h>
 
#if !TARGET_IPHONE_SIMULATOR
#import <arm/arch.h>
#endif
 
int main(int argc, char *argv[])
{
    #ifdef _ARM_ARCH_7
        // Enable IEEE-754 denormal support.
        fenv_t env;
        fegetenv(&env);
        env.__fpscr &= ~__fpscr_flush_to_zero;
        fesetenv(&env);
    #endif
 
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));
    }
}

Можно определить, включило ли приложение поддержку нестандартных чисел со следующей строкой JavaScript:

Перечисление 2  , Проверяющее нестандартную поддержку числа

alert(Number.MIN_VALUE != 0);

Если нестандартные числа будут поддерживаться, то предупреждение будет читать true; иначе, это будет читать false.

Дополнительные материалы для чтения

Полная спецификация IEEE 754 описывает подробные данные реализации соответствия уравнениям с плавающей точкой.

Язык сценариев JavaScript идет официальным названием ECMAScript и указан спецификацией ECMA 262.

test262 набор тестов, разработанный организацией, ответственной за язык ECMAScript, обеспечивает многочисленные тесты, проверяющие на соответствие против требований спецификации ECMA 262, включая поддержку нестандартных чисел.



История версии документа


ДатаПримечания
14.08.2012

Новый документ, что новый документ, описывающий, как позволить веб-контенту поддерживать нестандартные числа на устройствах на iOS.