У меня есть несколько вопросов, касающихся с плавающей запятой и устройств iOS:
Являются ли детерминированные значения на одном устройстве iOS плавающими точками?
Являются ли плавающие точки детерминированными для всех устройств iOS?Являются ли детерминированные точки с плавающей запятой устройствами iOS?
Если нет, есть ли способ сделать их детерминированными? Я имею в виду следующее: изменение настроек компилятора, использование сокращенного набора математических операций и т. Д.
Если нет никакого способа сделать это, какова была бы лучшая альтернатива?
Вместо этого я могу использовать фиксированные точки? Это будет означать использование NSDecimalNumber?
Cheers.
Можете уточнить, что вы подразумеваете под детерминистическим? Какая у вас проблема? Обратите внимание, что параметры компилятора будут влиять на соответствие плавающей запятой IEEE, поэтому вам нужно будет проверить настройки Xcode, чтобы гарантировать, что при компиляции установлены правильные флаги. –
Я хочу, чтобы мой код был детерминированным. Я хочу, чтобы операция вернула float, чтобы вернуть то же самое значение для разных os и устройств. Меня не волнует точность результата, он просто должен быть стабильным. http://randomascii.wordpress.com/2013/07/16/floating-point-determinism/ –
Учитывая те же самые входы (включая системные настройки), вы получите одинаковые выходы для любой операции с поплавком IEEE. Для iOS вы рискуете только разницей между версиями iOS, которые имеют разные значения размера для целочисленных типов, и это может произойти только в случае переполнения (т. Е. Ошибки) с меньшими значениями. –