Mam podwójne:Jak zaokrąglić w dół podwójną do najbliższej mniejszej int w C?
double d = 25.342;
Jak mogę przekonwertować go do 25
wartości?
Jeśli to był -12.46
, chciałbym uzyskać -13
.
Mam podwójne:Jak zaokrąglić w dół podwójną do najbliższej mniejszej int w C?
double d = 25.342;
Jak mogę przekonwertować go do 25
wartości?
Jeśli to był -12.46
, chciałbym uzyskać -13
.
int i = (int)floor(25.342);
Chciałbym, aby wynik był typu int int –
Problemy zaczynają się, gdy argumentem dla podłogi jest> INT_MAX lub
W takim przypadku nie można uzyskać całkowitej wersji piętra wartości, więc nie ma to znaczenia. – jprete
int i = (int)floor(25.342);
Uwaga ta przekształci 12.99999 do 12.
Ref:
Gdzie x to 25,342
int i = x> = 0? (Int) (x + 0,5): (int) (x-0,5)
#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;
}
Można też spojrzeć na stdint.h
Przerywa wykonywanie wielu wartości, takich jak '25.9', ponieważ nie" zaokrągla podwójnie do najbliższej mniejszej int ". – chux
chciałbym wynik być typu int –
Dla przypomnienia to, o co prosisz, to zaokrąglanie, a nie rzutowanie. –
@Jon Nie, to nie jest "zaokrąglanie". Zaokrąglanie przekształca liczbę w "najbliższą" liczbę całkowitą. – AraK