国产探花免费观看_亚洲丰满少妇自慰呻吟_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, 你可以換做其他的類型。自己多測幾次就明白了

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀柔区| 湟源县| 唐山市| 洛宁县| 永和县| 东辽县| 朝阳区| 和平区| 开封市| 镇康县| 阿坝| 昆明市| 彰化市| 民权县| 盐池县| 正蓝旗| 逊克县| 陆良县| 隆回县| 安远县| 连山| 独山县| 敦煌市| 云安县| 新田县| 沂水县| 明光市| 霍邱县| 镇远县| 阳原县| 桃园市| 固原市| 饶河县| 临武县| 丽水市| 锦屏县| 新田县| 怀化市| 沅江市| 上栗县| 瓦房店市|