Как округлить двойное число до ближайшего меньшего целого в C? - PullRequest
15 голосов
/ 27 октября 2009

У меня есть двойной:

double d = 25.342;

Как я могу преобразовать его в 25 значение?

Если бы это было -12.46 Я бы хотел получить -13.

Ответы [ 4 ]

29 голосов
/ 27 октября 2009
int i = (int)floor(25.342);
15 голосов
/ 27 октября 2009
int i = (int)floor(25.342);

Обратите внимание, что это преобразует 12.99999 в 12.

Ref:

http://www.codecogs.com/reference/c/math.h/floor.php

1 голос
/ 22 октября 2012
#include <math.h>
#include <stdio.h>

int main(){

    double d = 25.342;
    double e = -12.99;

    printf("%d\n",(int)round(d)); // 25
    printf("%d\n",(int)round(e)); // -13

    return 0;
}

Вы также можете взглянуть на stdint.h

1 голос
/ 27 октября 2009

где х ваш 25,342

int i = x> = 0? (int) (x + 0.5): (int) (x-0.5)

...