Следует помнить, что long double
просто действует как double
на оборудовании iPhone. Вы не получаете никакой дополнительной точности от большего типа. Это даст вам больше точности в симуляторе, потому что вы работаете там на Mac, что может сбить вас с толку.
Как отмечается здесь (и другими комментаторами), NSDecimal или NSDecimalNumber - это способ получения точности (до 34 цифр), и вычисления, выполняемые с его помощью, выполняются с истинной десятичной математикой, а не двоичная с плавающей точкой. Это позволяет избежать многих ошибок, которые вы видите при обычной математике IEEE 754.