Пока вы говорите только об отображении, это довольно просто. Вы можете указать формат : %g
:
Двойной аргумент должен быть преобразован в стиле f
или e
(или в стиле F
или E
в случае спецификатора преобразования G
), с точностью, указывающей число значащие цифры [...] Заменяющие нули должны быть удалены из дробной части результата [...]
double twopointfive = 2.500;
double onepointzero = 1.0;
double pointtwofive = .25000000000;
NSLog(@"%g %f", twopointfive, twopointfive);
NSLog(@"%g %f", onepointzero, onepointzero);
NSLog(@"%g %f", pointtwofive, pointtwofive);
2011-12-06 21: 27: 59.180 TrailingZeroes [39506: 903] 2.5 2.500000
2011-12-06 21: 27: 59.184 TrailingZeroes [39506: 903] 1 1.000000
2011-12-06 21: 27: 59.185 TrailingZeroes [39506: 903] 0,25 0,250000
Тот же спецификатор формата можно использовать с NSNumberFormatter
, что также даст вам некоторый контроль над значащими цифрами.
Замыкающие нули нельзя удалить из способа хранения числа в памяти, конечно.