C++數(shù)據(jù)精度問題(對浮點數(shù)保存指定位小數(shù))
1、背景
對浮點數(shù)保存指定位小數(shù)。比如, 1.123456. 要保存1位小數(shù),,調(diào)用方法后, 保存的結果為: 1.1。 再比如,1.98765, 保存2位小數(shù)的結果為: 2.00.
2、 解決方案
A、添加頭文件
#include <sstream> #include <iomanip>
B、添加命名空間
using namespace std;
C、添加函數(shù)
/* 函數(shù)名:round /* 函數(shù)功能:數(shù)據(jù)精度計算函數(shù) /* 函數(shù)參數(shù):float src:待求精度數(shù) int bits:精度(0表示保留小數(shù)點后0位小數(shù),1表示保留1位小數(shù),2:表示保留2位小數(shù)) /* 函數(shù)返回值:精度求取結果 /* Author: Lee /************************************************************************/ float round(float src, int bits);
函數(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在計算機中表示為 1.0499999997, float表示為1.0500000003, 但其實際都是與1.05相等的。
round方方式對處理的位數(shù)為5的情況有例外,比如: 1.05, 處理的結果 可能為1.0499999997。 這里寫的是float, 你可以換做其他的類型。自己多測幾次就明白了
相關文章
C++利用 _findfirst與_findnext查找文件的方法
這篇文章主要給大家介紹了關于C++利用 _findfirst與_findnext查找文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-06-06
c++元編程模板函數(shù)重載匹配規(guī)則示例詳解
這篇文章主要為大家介紹了c++元編程模板函數(shù)重載匹配規(guī)則示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01

