您好,登錄后才能下訂單哦!
小編給大家分享一下如何解決C++數據精度問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1、背景
對浮點數保存指定位小數。比如, 1.123456. 要保存1位小數,,調用方法后, 保存的結果為: 1.1。 再比如,1.98765, 保存2位小數的結果為: 2.00.
2、 解決方案
A、添加頭文件
#include <sstream> #include <iomanip>
B、添加命名空間
using namespace std;
C、添加函數
/************************************************************************/ /* 函數名:round /* 函數功能:數據精度計算函數 /* 函數參數:float src:待求精度數 int bits:精度(0表示保留小數點后0位小數,1表示保留1位小數,2:表示保留2位小數) /* 函數返回值:精度求取結果 /* Author: Lee /************************************************************************/ float round(float src, int bits);
函數實現
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方方式對處理的位數為5的情況有例外,比如: 1.05, 處理的結果 可能為1.0499999997。 這里寫的是float, 你可以換做其他的類型。自己多測幾次就明白了
以上是“如何解決C++數據精度問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。