Научная запись с тремя значащими фигурами

Есть ли способ использовать научную запись в цели c и отображать только три значащие цифры? То, что я использую сейчас:

string = [NSString stringWithFormat:@"%e", floatNumber];
// floatNumber = 100000; string = 1.000000e+06

Я просто хочу строку = 1.00e+06

1 ответ

Решение

Используйте спецификатор формата ".2" следующим образом:

    string = [NSString stringWithFormat:@"%.2e", floatNumber];

Из документации Apple:

Спецификаторы формата, поддерживаемые методами форматирования NSString и функциями форматирования CFString, соответствуют спецификации IEEE printf...

А из спецификации printf IEEE, если вы читаете в разделе "Описание", вы найдете:

е, е

Двойной аргумент должен быть преобразован в стиле "[-]d.ddde±dd", где перед символом радиуса стоит одна цифра (которая не равна нулю, если аргумент не равен нулю) и количество цифр после него равен точности; если точность отсутствует, она должна быть принята за 6; если точность равна нулю, а флаг '#' отсутствует, знак радиуса не появляется. Цифра младшего разряда должна быть округлена в соответствии с реализацией. Спецификатор преобразования E должен производить число с "E" вместо "e", представляющим показатель степени. Экспонента всегда должна содержать не менее двух цифр. Если значение равно нулю, показатель степени должен быть равен нулю.

Другие вопросы по тегам