C++標準庫 —— round 函數用法詳解

? ?round?是 C/C++ 標準庫中的一個數學函數,用于對浮點數進行四舍五入取整。以下是它的詳細用法說明:

目錄

1. 基本語法

2. 功能描述

3. 使用示例

示例1:基本用法

示例2:保留小數位

4. 相關函數對比

5. 注意事項

6. 實際應用場景

7. 替代方案(不使用round函數)


1. 基本語法

#include <cmath>  // 需要包含的頭文件double round(double x);      // 最常用版本
float roundf(float x);       // 單精度浮點版本
long double roundl(long double x);  // 長雙精度版本

2. 功能描述

  • 將浮點數四舍五入到最接近的整數值

  • 中間值(如 1.5、-2.5)會向遠離零的方向舍入(即 1.5 → 2,-2.5 → -3)

  • 返回類型與輸入類型相同(double/float/long double)

3. 使用示例

示例1:基本用法

#include <iostream>
#include <cmath>int main() {std::cout << round(3.14) << "\n";   // 輸出: 3std::cout << round(3.5) << "\n";    // 輸出: 4std::cout << round(-2.3) << "\n";   // 輸出: -2std::cout << round(-2.5) << "\n";   // 輸出: -3return 0;
}

示例2:保留小數位

#include <iostream>
#include <cmath>double roundToDecimal(double num, int decimal) {double factor = pow(10, decimal);return round(num * factor) / factor;
}int main() {double num = 3.1415926;std::cout << roundToDecimal(num, 2) << "\n";  // 輸出: 3.14std::cout << roundToDecimal(num, 3) << "\n";  // 輸出: 3.142return 0;
}

4. 相關函數對比

函數功能描述示例
round四舍五入到最接近的整數round(2.6)→3
floor向下取整(向負無窮方向)floor(2.6)→2
ceil向上取整(向正無窮方向)ceil(2.3)→3
trunc向零方向取整(直接截斷)trunc(-2.6)→-2

5. 注意事項

  1. 頭文件:必須包含?<cmath>

  2. 精度問題:浮點數精度可能導致意外結果,如?round(2.4999999999999999)?可能得到 2 而不是 3

  3. 整數轉換:如果需要整數結果,需要顯式轉換:

    int result = static_cast<int>(round(3.7));
  4. C++11:從 C++11 開始標準化,之前可能不是所有編譯器都支持

6. 實際應用場景

  1. 金融計算(金額四舍五入)

  2. 統計計算(結果取整)

  3. 圖形處理(坐標取整)

  4. 游戲開發(分數計算)

7. 替代方案(不使用round函數)

// 正數四舍五入
int rounded = (int)(num + 0.5);// 處理正負數的通用版本
int rounded = (num > 0) ? (int)(num + 0.5) : (int)(num - 0.5);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75891.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75891.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75891.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式C語言11(宏/程序的編譯過程)

宏 ? 基本概念 C語言中可以利用宏定義實現文本的快速替換&#xff0c;注意&#xff1a;宏定義是單純的文本替換&#xff0c;不檢查語法是否合法。 C語言標準中提供了很多的預處理指令&#xff0c;比如#include、#pragma…以#開頭的都屬于預處理指令。 預處理指令指的是在…

【湖南大學】2025我們該如何看待DeepSeek

大家好&#xff0c;我是櫻木。 DeepSeek 官方網站&#xff1a;https://www.deepseek.com/ 一、DeepSeek 到底是什么&#xff1f; TA 到底厲害在哪里&#xff1f; 故事從 ChatGPT 說起 去年我們看到 Open AI 發布ChatGPT 后&#xff0c;全球的注意力到了 AI 身上。 我們來拆…

【區塊鏈安全 | 第三十三篇】備忘單

文章目錄 備忘單操作符優先級備忘單ABI 編碼和解碼函數bytes 和 string 的成員Address 的成員區塊與交易屬性校驗和斷言數學和加密函數合約相關類型信息函數可見性說明符修飾符備忘單 操作符優先級備忘單 以下是操作符的優先級順序,按評估順序列出: 優先級描述操作符1后綴遞…

Python----計算機視覺處理(Opencv:道路檢測之車道線顯示)

完整版&#xff1a;Python----計算機視覺處理&#xff08;Opencv:道路檢測完整版&#xff1a;透視變換&#xff0c;提取車道線&#xff0c;車道線擬合&#xff0c;車道線顯示&#xff09; 一、透視變換 將透視變換之后的圖像再繼續透視變換為原圖像 可參考Python----計算機視…

26屆Java暑期實習面經,騰訊視頻一面

短鏈接的生成原理 如何解決短鏈接生成的哈希沖突問題 如何加快從短鏈接到原鏈接的重定向過程 TCP 和 UDP 協議 如何理解 TCP 是面向連接的 為什么 TCP 的握手是 3 次 IO 模式 是否有真正寫過一個底層的 Socket 通信 MySQL 的事務隔離級別 MVCC 機制 什么叫服務的并行 為什么能基…

Windows注冊鼠標鉤子,獲取用戶選中的文本

注冊鼠標鉤子 // 注冊鼠標鉤子 HHOOK hMouseHook; hMouseHook SetWindowsHookEx(WH_MOUSE_LL, MouseProc, GetModuleHandle(NULL), 0);// 取消鼠標鉤子 UnhookWindowsHookEx(hMouseHook); hMouseHook nullptr; 上述代碼中MouseProc方法用于處理系統的鼠標消息 處理鼠標消息…

flink cdc的source數據流如何配置事件時間,如何設置時間語義,分配時間戳并生成水位線

在 Flink CDC 中為 Source 數據流配置事件時間需要結合時間語義設置、時間戳分配和水位線生成三個核心步驟。以下是具體配置方法及注意事項&#xff1a; 1. 設置時間語義 Flink 默認使用處理時間&#xff08;Processing Time&#xff09;&#xff0c;需顯式指定事件時間語義&a…

C++ 指針類型轉換全面解析與最佳實踐

文章目錄 C 指針類型轉換全面解析與最佳實踐1. 隱式轉換基類和派生類指針 2. 顯式轉換(1) static_cast(2) dynamic_cast(3) reinterpret_cast(4) const_cast 3. C 風格轉換4. 常見問題與注意事項5. 總結最佳實踐 C 指針類型轉換全面解析與最佳實踐 在 C 中&#xff0c;指針類型…

批量將 txt/html/json/xml/csv 等文本拆分成多個文件

我們的文本文件太大的時候&#xff0c;我們通常需要對文本文件進行拆分&#xff0c;比如按多少行一個文件將一個大的文本文件拆分成多個小的文本文件。這樣我們在打開或者傳輸的時候都比較方便。今天就給大家介紹一種同時對多個文本文件進行批量拆分的方法&#xff0c;可以快速…

ARM 匯編啟動代碼詳解:從中斷向量表到中斷處理

ARM 匯編啟動代碼詳解&#xff1a;從中斷向量表到中斷處理 引言 在嵌入式系統開發中&#xff0c;ARM 處理器&#xff08;如 Cortex-A 系列&#xff09;的啟動代碼是系統初始化和運行的基礎。啟動代碼通常包括中斷向量表的創建、初始化硬件狀態&#xff08;如關閉緩存和 MMU&a…

4.7學習總結 可變參數+集合工具類Collections+不可變集合

可變參數&#xff1a; 示例&#xff1a; public class test {public static void main(String[] args) {int sumgetSum(1,2,3,4,5,6,7,8,9,10);System.out.println(sum);}public static int getSum(int...arr){int sum0;for(int i:arr){sumi;}return sum;} } 細節&#xff1a…

2023年藍橋杯第十四屆CC++大學B組真題及代碼

目錄 1A&#xff1a;日期統計 解析代碼_暴力_正解 2B&#xff1a;01串的熵 解析代碼_暴力_正解 3C&#xff1a;冶煉金屬 解析代碼_暴力_正解 4D&#xff1a;飛機降落 解析代碼_暴力dfs_正解 5E&#xff1a;接龍數列 解析代碼_dp_正解 6F&#xff1a;島嶼個數 解析代…

rom定制系列------小米10pro機型定制解鎖固件 原生安卓15批量線刷固件 操作解析與界面預覽

注意;固件用于自己機型忘記密碼或者手機號注銷等出現設備鎖 過保修期 售后無視的機型&#xff0c;勿用于非法途徑 目前有粉絲聯系&#xff0c;自己的機型由于手機號注銷導致手機更新系統后出現設備鎖界面。另外也沒有解鎖bl。目前無法使用手機。經過詢問是小米10pro機型。根據…

信息學奧賽一本通 1861:【10NOIP提高組】關押罪犯 | 洛谷 P1525 [NOIP 2010 提高組] 關押罪犯

【題目鏈接】 ybt 1861&#xff1a;【10NOIP提高組】關押罪犯 洛谷 P1525 [NOIP 2010 提高組] 關押罪犯 【題目考點】 1. 圖論&#xff1a;二分圖 2. 二分答案 3. 種類并查集 【解題思路】 解法1&#xff1a;種類并查集 一個囚犯是一個頂點&#xff0c;一個囚犯對可以看…

我的NISP二級之路-01

目錄 一.SSE-CMM系統安全工程-能力成熟度模型(Systems Security Engineering - Capability Maturity Model) 二.ISMS 即信息安全管理體系(Information Security Management System),是一種基于風險管理的、系統化的管理體系 三.Kerberos協議 1. 用戶登錄與 AS 請求 2…

WEB安全--內網滲透--利用Net-NTLMv2 Hash

一、前言 在前兩篇文章中分析了NTLM協議中Net-NTLMv2 Hash的生成、如何捕獲Net-NTLMv2 Hash&#xff0c;現在就來探討一下在內網環境中&#xff0c;如何利用Net-NTLMv2 Hash進行滲透。 二、Net-NTLM Hash的破解 工具&#xff1a;hashcat 原理&#xff1a;利用其內部的字典對…

如何正確使用 `apiStore` 進行 API 管理

在現代前端開發中&#xff0c;API 管理是一個非常重要的環節。apiStore 是一個基于 Pinia 的狀態管理工具&#xff0c;它可以幫助我們更高效地管理和調用 API。本文將詳細介紹如何正確使用 apiStore&#xff0c;包括如何創建 API 配置文件、在組件中使用 apiStore 以及如何配置…

瓦片數據合并方法

影像數據 假如有兩份影像數據 1.全球底層影像0-5級別如下&#xff1a; 2.局部高清影像數據級別9-14如下&#xff1a; 合并方法 將9-14文件夾復制到全球底層0-5的目錄下 如下&#xff1a; 然后合并xml文件 使得Tileset設置到最高級&#xff08;包含所有級別&#xff09;&…

C++中的類和對象(上)

1 類的定義 1.1 類定義的格式 1 class為定義類的關鍵字&#xff0c;Stack為類的名字&#xff0c;{}中為類的主體&#xff0c;注意類定義結束時后面分號不能省 略》。類體中內容稱為類的成員&#xff1a;類中的變量稱為類的屬性或成員變量; 類中的函數稱為類的方法或者成員函數…

【Tauri2】013——前端Window Event與創建Window

前言 【Tauri2】012——on_window_event函數-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146909801?spm1001.2014.3001.5501 前面介紹了on_window_event&#xff0c;這個在Builder中的方法&#xff0c;里面有許多事件&#xff0c;比如Moved&#xff0c;Res…