Можно использовать дополнение Firefox Инструментарий Веб-разработчика
Если вы просто хотите округлить число для вывода, то строка формата «%. 2f»
действительно является правильным ответом. Однако, если вы действительно хотите округлить значение с плавающей запятой для дальнейших вычислений, сработает что-то вроде следующего:
#include <math.h>
float val = 37.777779;
float rounded_down = floorf(val * 100) / 100; /* Result: 37.77 */
float nearest = roundf(val * 100) / 100; /* Result: 37.78 */
float rounded_up = ceilf(val * 100) / 100; /* Result: 37.78 */
Обратите внимание, что есть три разных правила округления, которые вы можете выбрать: округление в меньшую сторону (т.е. усечение после двух десятичных знаков) , округляем до ближайшего и округляем в большую сторону. Как правило,
Невозможно округлить float
до другого float
, потому что округленное float
не может быть представимым ( ограничение чисел с плавающей запятой). Например, вы округлили 37,777779 до 37,78, но ближайшее представимое число - 37,781.
Однако вы можете «округлить» float
с помощью строковой функции форматирования.
printf("%.2f", 37.777779);
Если вы хотите записать в C-строку:
char number[24]; // dummy size, you should take care of the size!
sprintf(number, "%.2f", 37.777779);
Как насчет этого:
float value = 37.777779;
float rounded = ((int)(value * 100 + .5) / 100.0);
Если вы говорите о округлении значения для печати, тогда ответы Эндрю Колесона и Арака верны:
printf("%.2f", 37.777779);
Но обратите внимание, что если вы стремитесь округлить число до 37,78 для внутреннего использования (например, для сравнения с другим значением), тогда это не очень хорошая идея из-за того, как работают числа с плавающей запятой: вы обычно не делаете Я хочу выполнить сравнение на равенство для чисел с плавающей запятой, вместо этого используйте целевое значение +/- значение сигмы. Или закодируйте число как строку с известной точностью и сравните это.
См. Ссылку в Ответ Грега Хьюгилла на связанный вопрос , который также объясняет, почему вы не должны использовать плавающую точку для финансовых расчеты.
Использование %. 2f в printf. Он выводит только 2 десятичные точки.
Пример:
printf("%.2f", 37.777779);
Вывод:
37.77
Вы все еще можете использовать:
float ceilf(float x); // don't forget #include <math.h> and link with -lm.
пример:
float valueToRound = 37.777779;
float roundedValue = ceilf(valueToRound * 100) / 100;