@SVM12

Как правильно форматировать float в строку?

Стоит задача преобразовать float в строку c округлением и с заданной точностью,
например 2:
2.150000->2.15
2.000000->2
2.004000->2
2.005000->2.01
1140.000000->1140

Стандартными средствами c printf:
%.2f - всегда фиксированное число(2) знаков после запятой - не подходит
%.2g - вроде бы подходит, но иногда появляются числа с epsilon, например вместо 1140 -> 1.1e+02
  • Вопрос задан
  • 3205 просмотров
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg
Любые ответы на любые вопросы
Расскажите всю задачу. Возможно, вы пытаетесь использовать числа с плавающей запятой там, где нужны числа с фиксированной запятой.
Ответ написан
Комментировать
@SVM12 Автор вопроса
Это поле количество. Оно может быть дробным. На мобильном устройстве, всвязи с небольшим экраном хочется, чтобы целые числа показывались без части после запятой. Также предполагается, что максимальное количество чисел после запятой будет равно 2. Но, если вдруг в будущем это число увеличится, то хотелось бы, чтобы происходило округление.
Ответ написан
@to_climb
Возможно, %g не так уж и не подходит, см. описание.
Экспоненциальная форма записи должна случаться только тогда, когда число меньше 10^-2 (при точности округления %.2g).
Т.е. если проверить, что число заведомо больше 0,01, то можно её использовать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы