Нет, вы не можете упростить его дальше. Число с плавающей запятой отличается от целого.
Следует отметить, что тип float
может содержать до 24 бит точности (около 6-7 десятичных цифр точности). Количество, которое у вас там, превышает точность, доступную для float
, а сумма вычитания слишком мала, чтобы повлиять на 24-битную точность, поэтому операция просто не вносит никаких изменений в результат.
Проблема не устранена, даже если вы выполняете операцию в double
, так как число даже превышает точность 53 бит для double
.
В зависимости от вашего требования, может понадобиться 64-разрядный целочисленный тип (long long
или int64_t
). Если такая точность необходима для еще большего числа, базового типа будет недостаточно. Внешняя библиотека может понадобиться, если вам нужна очень высокая точность.
Однажды я пойму, плавает. Спасибо, попробуем целые числа. – daidai
Ах, ints, хотя и слишком малы. – daidai
Итак, как вы делаете минус 1 из большого NSNumber? – daidai