Поддержка нестандартных чисел
iOS 6 поддерживает использование нестандартных чисел для JavaScript в Ваших приложениях. Большинство приложений не должно будет включать эту поддержку. Если Ваше приложение должно вычислить числа, приближающиеся к нулю, можно теперь выбрать в поддерживать нестандартные числа — при знании, что математика точна и придерживается промышленных стандартов. Safari на iOS 6 придерживается спецификации плавающей точки IEEE 754, таким образом, веб-страницы, просматриваемые в Safari автоматически, поддерживают нестандартные числа.
Что такое нестандартные числа?
Нестандартные числа являются значениями с плавающей точкой двойной точности, которые являются очень близко к нулю, но не равны нулю. Без поддержки нестандартных чисел процессор обрабатывает числа, которые достаточно близки для обнуления как сам нуль. Результатом является число, которое незначительно менее точно, чем он использовал бы нестандартные числа.
Почему я должен поддерживать нестандартные числа?
Необходимо рассмотреть поддерживающие нестандартные числа если приложение:
Позволяет пользователям просматривать веб-сайты и должен передать наборы тестов стандартов JavaScript
Выполняет вычисления с плавающей точкой с помощью JavaScript в a
UIWebViewкоторые требуют высокой степени точности
Есть ли какие-либо последствия поддержки нестандартных чисел?
Включение поддержки нестандартных чисел происходит на уровне процессора. После того, как это будет включено, весь код плавающей точки двойной точности, работающий в Вашем приложении, начнет использовать нестандартные числа, не просто 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. |