Печать двойного без десятичных знаков - PullRequest
10 голосов
/ 26 июля 2011

У меня есть число, хранящееся как double, и я хочу напечатать его без десятичных знаков. Поэтому, если бы у меня было двойное значение 919545634521.000000, оно всегда печаталось с добавленными к нему десятичными знаками. Как я могу распечатать его без него, чтобы он выглядел так: 919545634521?

#include<stdlib.h>

int main()
{
    double number = 9220343120;
    printf("%??\n", number);
}

Ответы [ 6 ]

11 голосов
/ 26 июля 2011

try

printf("%.0lf\n",phoneNum);

Вы также можете предпочесть

long long phoneNum;
phoneNum = strtoll(buffer,NULL,0);
printf("%lld\n",phoneNum);

.Однако, в зависимости от системы, вам может потребоваться другая функция для преобразования (я думаю, это _strtoui64 для Windows).

4 голосов
/ 26 июля 2011

Ну, не храните номер телефона как число с плавающей запятой (одно неверное движение, и в итоге ваши номера телефонов получат округленное для вас).* Сохраните его как целое число или строку.

2 голосов
/ 26 июля 2011

Используйте% 0.0lf или используйте целое число

Спецификации формата поиска для printf

1 голос
/ 26 июля 2011

printf ("%.0f\n", phoneNum); должно работать.

0 голосов
/ 14 июля 2014

Не уверен насчет поддержки других компиляторов, но GCC поддерживает спецификатор формата 'g', который будет печатать double, используя наименьшее пространство, необходимое для полной точностиНапример:

double d1 = 10.000;
double d2 = 25.03;
printf( "d1: %g\nd2: %g\n", d1, d2 );

приведет к:

d1: 10
d2: 25.03
0 голосов
/ 26 июля 2011

Вы ищете точность - спецификатор формата %.0f должен делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...