C++數(shù)據(jù)精度問題的解決方案(對浮點數(shù)保存指定位小數(shù))
1、背景
對浮點數(shù)保存指定位小數(shù)。比如, 1.123456. 要保存1位小數(shù),,調用方法后, 保存的結果為: 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、調用方式
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++數(shù)據(jù)精度問題的解決方案(對浮點數(shù)保存指定位小數(shù)),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
C語言中的abs()函數(shù)和exp()函數(shù)的用法
這篇文章主要介紹了C語言中的abs()函數(shù)和exp()函數(shù)的用法,是C語言入門學習中的基礎知識,需要的朋友可以參考下2015-08-08

