最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++的ceil、floor和round用法解讀

 更新時(shí)間:2025年07月14日 14:39:06   作者:咸魚_要_翻身  
文章介紹了C++中實(shí)現(xiàn)取整的三種方法:標(biāo)準(zhǔn)庫函數(shù)(ceil、floor、round)和手動整數(shù)運(yùn)算公式,強(qiáng)調(diào)推薦使用cmath中的標(biāo)準(zhǔn)函數(shù),注意其返回double類型及負(fù)數(shù)處理規(guī)則

在 C++ 中,向上取整(Ceiling)、向下取整(Floor)、四舍五入(Rounding) 可以通過標(biāo)準(zhǔn)庫 <cmath> 提供的函數(shù)實(shí)現(xiàn)。

1. 標(biāo)準(zhǔn)庫函數(shù)(推薦)

(1)std::ceil(x)—— 向上取整

功能:返回 ≥ x 的最小整數(shù)(即“天花板值”)。

頭文件#include <cmath>

示例

#include <cmath>
#include <iostream>

int main() {
    double x = 3.2;
    double y = -2.7;

    std::cout << std::ceil(x) << std::endl;  // 輸出 4.0
    std::cout << std::ceil(y) << std::endl;  // 輸出 -2.0

    return 0;
}

(2)std::floor(x)—— 向下取整

功能:返回 ≤ x 的最大整數(shù)(即“地板值”)。

頭文件#include <cmath>

示例

#include <cmath>
#include <iostream>

int main() {
    double x = 3.7;
    double y = -2.3;

    std::cout << std::floor(x) << std::endl;  // 輸出 3.0
    std::cout << std::floor(y) << std::endl;  // 輸出 -3.0

    return 0;
}

(3)std::round(x)—— 四舍五入

功能:返回最接近 x 的整數(shù)(四舍五入)。

頭文件#include <cmath>

示例

#include <cmath>
#include <iostream>

int main() {
    double x = 3.4;
    double y = 3.6;
    double z = -2.5;

    std::cout << std::round(x) << std::endl;  // 輸出 3.0
    std::cout << std::round(y) << std::endl;  // 輸出 4.0
    std::cout << std::round(z) << std::endl;  // 輸出 -2.0(注意:-2.5 四舍五入為 -2)

    return 0;
}

2. 手動實(shí)現(xiàn)(適用于整數(shù)運(yùn)算)

(1)向上取整(Ceiling)

int ceil_division(int a, int b) {
    return (a + b - 1) / b;
}

示例

int x = 7, y = 3;
int ceil = (x + y - 1) / y;  // ceil = 3(因?yàn)?7/3 ≈ 2.333,向上取整得 3)

(2)向下取整(Floor)

int floor_division(int a, int b) {
    return a / b;
}

示例

int x = 7, y = 3;
int floor = x / y;  // floor = 2(因?yàn)?7/3 ≈ 2.333,向下取整得 2)

(3)四舍五入(Rounding)

int round_division(int a, int b) {
    return (a + b / 2) / b;
}

示例

int x = 7, y = 3;
int rounded = (x + y / 2) / y;  // rounded = 2(因?yàn)?7/3 ≈ 2.333,四舍五入得 2)

3. 注意事項(xiàng)

std::ceil、std::floor、std::round 返回 double,如果需要整數(shù),需要顯式轉(zhuǎn)換:

int ceil_val = static_cast<int>(std::ceil(3.2));  // ceil_val = 4
int floor_val = static_cast<int>(std::floor(3.7));  // floor_val = 3
int round_val = static_cast<int>(std::round(3.6));  // round_val = 4

負(fù)數(shù)情況

  • std::ceil(-2.3) 返回 -2.0(向上取整)。
  • std::floor(-2.3) 返回 -3.0(向下取整)。
  • std::round(-2.5) 返回 -2.0(四舍五入)。

編譯選項(xiàng)(某些編譯器可能需要 -lm 鏈接數(shù)學(xué)庫):

g++ program.cpp -o program -lm

4. 總結(jié)

方法適用場景示例
std::ceil(x)標(biāo)準(zhǔn)向上取整(推薦)std::ceil(3.2) → 4.0
std::floor(x)標(biāo)準(zhǔn)向下取整(推薦)std::floor(3.7) → 3.0
std::round(x)標(biāo)準(zhǔn)四舍五入(推薦)std::round(3.6) → 4.0
(a + b - 1) / b整數(shù)向上取整(7 + 3 - 1) / 3 = 3
a / b整數(shù)向下取整7 / 3 = 2
(a + b / 2) / b整數(shù)四舍五入(7 + 1) / 3 = 2

推薦優(yōu)先使用 <cmath> 提供的標(biāo)準(zhǔn)函數(shù),它們更通用且可讀性更好。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vscode編譯運(yùn)行c語言報(bào)錯亂碼的解決

    vscode編譯運(yùn)行c語言報(bào)錯亂碼的解決

    本文主要介紹了vscode編譯運(yùn)行c語言報(bào)錯亂碼,文中通過圖文介紹的的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • C++無符號整數(shù)溢出問題解析

    C++無符號整數(shù)溢出問題解析

    這篇文章主要介紹了C++無符號整數(shù)溢出探究,本文主要探討C/C++中無符號整數(shù)超過范圍后的計(jì)算問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 淺析C++中的重載,隱藏和覆蓋

    淺析C++中的重載,隱藏和覆蓋

    在C++語言中,函數(shù)扮演著很重要的角色,不管面向過程設(shè)計(jì),還是基于對象設(shè)計(jì)。本文主要為大家介紹了函數(shù)中重載、覆蓋和隱藏的相關(guān)知識,感興趣的小伙伴可以了解一下
    2022-12-12
  • VScode platformio使用的詳細(xì)步驟

    VScode platformio使用的詳細(xì)步驟

    使用VSCode作為編輯器,同時(shí)借助PlatformIO插件,可以幫助開發(fā)者更加高效地進(jìn)行嵌入式開發(fā),本文主要介紹了VScode platformio使用的詳細(xì)步驟,感興趣的可以了解一下
    2023-10-10
  • c++20引入的三路比較操作符<=>

    c++20引入的三路比較操作符<=>

    本文主要介紹了c++20引入的三路比較操作符<=>,返回strong_ordering、weak_ordering和partial_ordering三種類型,下面就來具體介紹一下,感興趣的可以了解一下
    2025-06-06
  • C語言 while語句的用法詳解

    C語言 while語句的用法詳解

    本文主要介紹C語言while 語句,這里對while 循環(huán)做詳細(xì)講解,并提供示例代碼,希望能幫助學(xué)習(xí)C語言的同學(xué)
    2016-07-07
  • C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)循環(huán)順序隊(duì)列

    C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)循環(huán)順序隊(duì)列

    這篇文章主要介紹了 C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)循環(huán)順序隊(duì)列的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • c語言輕松實(shí)現(xiàn)猜數(shù)字小游戲

    c語言輕松實(shí)現(xiàn)猜數(shù)字小游戲

    猜數(shù)字是興起于英國的益智類小游戲,起源于20世紀(jì)中期,一般由兩個(gè)人或多人玩,也可以由一個(gè)人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來用C實(shí)現(xiàn)這個(gè)游戲案例
    2022-04-04
  • C語言中的指針以及二級指針代碼詳解

    C語言中的指針以及二級指針代碼詳解

    這篇文章主要介紹了C語言中的指針以及二級指針代碼詳解,小編覺得還是挺不錯的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • C++基于先序、中序遍歷結(jié)果重建二叉樹的方法

    C++基于先序、中序遍歷結(jié)果重建二叉樹的方法

    這篇文章主要介紹了C++基于先序、中序遍歷結(jié)果重建二叉樹的方法,結(jié)合實(shí)例形式分析了基于C++構(gòu)建二叉樹的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05

最新評論

渭源县| 修文县| 大冶市| 开鲁县| 同江市| 调兵山市| 闻喜县| 佳木斯市| 交城县| 绍兴市| 同仁县| 新丰县| 仁寿县| 临沭县| 监利县| 衡水市| 梁平县| 北安市| 拉萨市| 琼中| 夏津县| 塔河县| 富川| 长乐市| 白水县| 江源县| 鹤山市| 玛多县| 五大连池市| 永昌县| 十堰市| 万州区| 乌鲁木齐市| 攀枝花市| 黔西| 哈尔滨市| 榆中县| 买车| 汽车| 邯郸县| 泽州县|