C++數(shù)據(jù)精度問(wèn)題的解決方案(對(duì)浮點(diǎn)數(shù)保存指定位小數(shù))
1、背景
對(duì)浮點(diǎn)數(shù)保存指定位小數(shù)。比如, 1.123456. 要保存1位小數(shù),,調(diào)用方法后, 保存的結(jié)果為: 1.1。 再比如,1.98765, 保存2位小數(shù)的結(jié)果為: 2.00.
2、 解決方案
A、添加頭文件
#include <sstream> #include <iomanip>
B、添加命名空間
using namespace std;
C、添加函數(shù)
/************************************************************************/ /* 函數(shù)名:round /* 函數(shù)功能:數(shù)據(jù)精度計(jì)算函數(shù) /* 函數(shù)參數(shù):float src:待求精度數(shù) int bits:精度(0表示保留小數(shù)點(diǎn)后0位小數(shù),1表示保留1位小數(shù),2:表示保留2位小數(shù)) /* 函數(shù)返回值:精度求取結(jié)果 /* Author: Lee /************************************************************************/ float round(float src, int bits);
函數(shù)實(shí)現(xiàn)
float CDemo1Dlg::round(float src, int bits) { stringstream ss; ss << fixed << setprecision(bits) << f; ss >> f; return f; }
D、調(diào)用方式
CString str2 = L"99.054"; float f2 = (float)_wtof(str2); f2 *= 10; f2 = this->round(f2, 2);
E 、注意
比如, 1.05, double在計(jì)算機(jī)中表示為 1.0499999997, float表示為1.0500000003, 但其實(shí)際都是與1.05相等的。
round方方式對(duì)處理的位數(shù)為5的情況有例外,比如: 1.05, 處理的結(jié)果 可能為1.0499999997。 這里寫的是float, 你可以換做其他的類型。自己多測(cè)幾次就明白了
總結(jié)
以上所述是小編給大家介紹的C++數(shù)據(jù)精度問(wèn)題的解決方案(對(duì)浮點(diǎn)數(shù)保存指定位小數(shù)),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 基于C++浮點(diǎn)數(shù)(float、double)類型數(shù)據(jù)比較與轉(zhuǎn)換的詳解
- C++數(shù)據(jù)精度問(wèn)題(對(duì)浮點(diǎn)數(shù)保存指定位小數(shù))
- C++浮點(diǎn)數(shù)類型詳情
- C++實(shí)現(xiàn)浮點(diǎn)數(shù)精確加法
- 解析C++ 浮點(diǎn)數(shù)的格式化顯示
- 深入C/C++浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式詳解
- C++浮點(diǎn)型的存儲(chǔ)方式詳解
- C++浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)詳解
- C/C++浮點(diǎn)數(shù)使用的兩個(gè)注意事項(xiàng)詳解
- C++中浮點(diǎn)類型的具體使用
相關(guān)文章
用C語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的虛擬機(jī)
這篇文章主要介紹了用C語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的虛擬機(jī),其中棧數(shù)組的部分非常值得學(xué)習(xí),需要的朋友可以參考下2015-07-07C語(yǔ)言算法金手指摩爾投票法手撕絕大多數(shù)問(wèn)題
這篇文章主要為大家介紹了C語(yǔ)言算法之金手指摩爾投票法手撕絕大多數(shù)問(wèn)題的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02詳解C語(yǔ)言數(shù)組靈活多變的訪問(wèn)形式
這篇文章主要介紹了詳解C語(yǔ)言數(shù)組靈活多變的訪問(wèn)形式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01C++基于蔡基姆拉爾森計(jì)算公式實(shí)現(xiàn)由年月日確定周幾的方法示例
這篇文章主要介紹了C++基于蔡基姆拉爾森計(jì)算公式實(shí)現(xiàn)由年月日確定周幾的方法,涉及C++針對(duì)日期時(shí)間的數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-07-07C語(yǔ)言中一些將字符串轉(zhuǎn)換為數(shù)字的函數(shù)小結(jié)
這篇文章主要介紹了C語(yǔ)言中一些將字符串轉(zhuǎn)換為數(shù)字的函數(shù)小結(jié),分別為atoi()函數(shù)和atol()函數(shù)以及atof()函數(shù),需要的朋友可以參考下2015-08-08