C++数据精度问题(对浮点数保存指定位小数)

 更新时间:2017年08月13日 13:36:59   投稿:mdxy-dxy  
这篇文章主要介绍了对浮点数保存指定位小数。比如, 1.123456. 要保存1位小数,,调用方法后, 保存的结果为: 1.1。 再比如,1.98765, 保存2位小数的结果为: 2.00,需要的朋友可以参考下

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语言signed关键字的详细使用

    C语言signed关键字的详细使用

    这篇文章主要介绍了C语言signed关键字的详细使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    的相关资料
    2017-06-06
  • c++中虚函数的实现详解

    c++中虚函数的实现详解

    众所周知探索c++对象内部的实现是一件非常有趣的事情,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?下面这篇文章就来给大家实际检验一下 Visual Studio 2013 编译器在无优化条件下,虚函数的实现。有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • VC WinExec打开指定程序或者文件的方法

    VC WinExec打开指定程序或者文件的方法

    使用WinExec命令打开指定程序或者文件的参数说明
    2008-11-11
  • C++中strcpy函数的实现

    C++中strcpy函数的实现

    strncpy这个可以指定拷贝字符的长度,指定源地址,目标地址,还有需要拷贝的字符的长度; strcpy只能传入两个参数,只指定拷贝的起始地址跟目标地址,然后整体拷贝;
    2015-10-10
  • C++中二叉堆排序详解

    C++中二叉堆排序详解

    这篇文章主要介绍了C++中二叉堆排序详解,主要介绍了二叉堆排序(递归和非递归实现上沉、下沉算法),需要的朋友可以参考下
    2023-01-01
  • C语言链表与单链表详解

    C语言链表与单链表详解

    链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,本章带你详细了解链表与单链表
    2022-02-02
  • C++利用 _findfirst与_findnext查找文件的方法

    C++利用 _findfirst与_findnext查找文件的方法

    这篇文章主要给大家介绍了关于C++利用 _findfirst与_findnext查找文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • C++结构体与类的区别详情

    C++结构体与类的区别详情

    这篇文章主要介绍了C++结构体与类的区别,C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。下面我们一起进入文章俩姐具体内容,需要的朋友也可以参考一下
    2021-11-11
  • c++元编程模板函数重载匹配规则示例详解

    c++元编程模板函数重载匹配规则示例详解

    这篇文章主要为大家介绍了c++元编程模板函数重载匹配规则示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 举例说明自定义C++异常处理的实例

    举例说明自定义C++异常处理的实例

    这篇文章主要介绍了举例说明自定义C++异常处理的实例的相关资料,这里举例说明该如何使用C++ 的异常,需要的朋友可以参考下
    2017-10-10

最新评论