国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++數據精度問題(對浮點數保存指定位小數)

2020-01-26 13:57:57
字體:
來源:轉載
供稿:網友

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, 你可以換做其他的類型。自己多測幾次就明白了

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潞城市| 平昌县| 荔波县| 平湖市| 运城市| 襄垣县| 安庆市| 霍邱县| 黑水县| 惠水县| 迭部县| 焉耆| 金华市| 巴塘县| 广汉市| 平定县| 荃湾区| 马龙县| 台山市| 临邑县| 章丘市| 河东区| 紫金县| 门源| 靖西县| 晋城| 金乡县| 潼关县| 中宁县| 红桥区| 张掖市| 吉木萨尔县| 方山县| 定兴县| 山阳县| 上虞市| 紫金县| 铜梁县| 涞源县| 临城县| 塔河县|