在實際開發中我們經常會需要對資料型別進行轉換,比如說要將double型別轉成int型別。取整我們也需要根據自己的業務需求來得到自己想要的值,有的需要向上取整、有的可能需要向下取整,或者四捨五入取整。還有的直接只取整數部分,不管小數後面的內容。
向上取整向上取整我們可以利用函式ceil來實現,該函式返回一個大於或等於x的整數。該函式由標頭檔案math.h提供,比如π透過ceil返回的就是4。該函式可以處理float、double、long doubles資料型別及泛型<T>,如果沒有小數則返回直接引數X,如果有小數部分則捨去小數部分並向前進一位。當引數是string字串時,則返回0。
ceil (double x);ceil (float x);ceil (long double x);ceil (T x); // additional overloads for integral type---------------------------double π = 3.1415926;int a = ceil(π);print("%d",a);---------------------------4
向下取整向下取整我們可以利用函式floor來實現,該函式返回一個不大於x的最大整數。該函式可以處理float、double、long doubles資料型別及泛型<T>,如果沒有小數則返回直接引數X,如果有小數部分則捨去小數部分並向後退一位。當引數是string字串時,則返回0。
floor (double x);floor (float x);floor (long double x);floor (T x); // additional overloads for integral type
四捨五入取整
四捨五入取整我們可以利用函式round來實現,返回距離引數最近的整數。該函式可以處理float、double、long doubles資料型別及泛型<T>,如果引數值正好在兩個整數的中間位置則返回距離0較遠的那一個整數。
round (double x);round (float x);round (long double x);round (T x); // additional overloads for integral types
只取整數部分
還有一種就是隻取整數部分而不會四捨五入,不管小數後面的值是多少都直接捨棄。 如果你只想取整數部分那麼只要在要轉換的變數前用括號確定要轉換的型別(int),這是種強制型別轉換,是不安全的賦值方法。
(int) (double x);(int) (float x);(int) (long double x);(int) (T x); // additional overloads for integral types
總結:
不同的資料有不同的資料型別,不同的資料型別具有不同的特性。不過不同型別的資料之間,有時候是可以相互轉換的。資料型別轉換就是因業務需求將資料從一種型別轉換為另一種型別以滿足業務需求,但是資料從“double”轉換“int”會丟失資料精度所以慎用哦!以上內容是小編給大家分享的【C/C++實戰030:double轉int常見的取整操作】。希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。