r'\bTimestamp\s+([0-9]+)\s+ID=(\w{18})\s+Dest_ID=(\w{18})\s+(\w{12})'
Как Rob упомянул, Вы, вероятно, просто хотите к печать плавание к 1 десятичному разряду. В этом случае можно сделать что-то как следующее:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float conver = 45.592346543;
printf("conver is %0.1f\n",conver);
return 0;
}
, Если Вы хотите к на самом деле круглому хранимую сумму, это немного более сложно. Для одного Ваше представление с одним десятичным разрядом будет редко иметь точный аналог в с плавающей точкой. Если Вы просто хотите стать максимально близкими, что-то вроде этого могло бы добиться цели:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float conver = 45.592346543;
printf("conver is %0.1f\n",conver);
conver = conver*10.0f;
conver = (conver > (floor(conver)+0.5f)) ? ceil(conver) : floor(conver);
conver = conver/10.0f;
//If you're using C99 or better, rather than ANSI C/C89/C90, the following will also work.
//conver = roundf(conver*10.0f)/10.0f;
printf("conver is now %f\n",conver);
return 0;
}
я сомневаюсь, что этот второй пример - то, что Вы ищете, но я включал его для полноты. Если Вы действительно требуете, чтобы представление Ваших чисел таким образом внутренне, и не только на выводе, рассмотрело использование представление фиксированной точки вместо этого.
Конечно, вы можете использовать roundf () . Если вы хотите округлить до одного десятичного знака, то вы можете сделать что-то вроде: roundf(10 * x) / 10
#include <math.h>
double round(double x);
float roundf(float x);
не забывают связываться с-lm. См. также перекрывают (), пол () и trunc ().
Только для обобщения ответа Rob немного, если Вы не выполнение его на выводе, можно все еще использовать тот же интерфейс с sprintf()
.
я думаю, что существует другой способ сделать это, все же. Можно попробовать ceil()
и floor()
к раунду вверх и вниз. Хороший прием должен добавить 0.5, таким образом, что-либо, что более чем 0,5 окружают, но что-либо под ним округляет в меньшую сторону. ceil()
и floor()
только работа над double
с все же.
РЕДАКТИРОВАНИЕ: Кроме того, для плаваний можно использовать truncf()
для усечения плаваний. Те же +0.5 приема должны работать, чтобы сделать точное округление.