自定义算法实现按精度去4舍5入处理double的数据
来源:互联网 发布:序列比对软件 编辑:程序博客网 时间:2024/05/16 13:47
主要思想是把原来的double数据扩大到精度位数的值,然后加上0.5,得到四舍五入的数据,、最后再缩小回按精度位处理的数据。
代码实现如下:
double Power(int iBase, int iPower){double dRet = 1.0;for(int i = 0; i < iPower; i++){dRet *= iBase;}return dRet;}double DealDoublePrecision(double dVal, int iPrecision){return (__int64)(dVal * Power(10, iPrecision) + 0.5) / Power(10, iPrecision);}
调用时:
double dVal = 12.890765006;dVal = test.DoublePrecisionDeal(dVal, 4);
精度为4时输出12.8908;
精度为2时输出12.89;
精度为5时输出12.89077;
还有一种方法,用sprintf和sscanf实现
double DoubleRound(double dValue, unsigned int nPrecision){char szValue[20] = {0};double dRetVal = 0.0;sprintf(szValue, "%.*lf", nPrecision, dValue);sscanf(szValue, "%lf", &dRetVal);return dRetVal;}
还有一种是用输入输出流的方式:
#include <iostream>#include <sstream>#include <iomanip>double DoubleRoundFunction(double dVal, int iPrecision){std::stringstream ss;ss << std::fixed << std::setprecision(iPrecision) << dVal;ss >> dVal;return dVal;}
阅读全文
0 0
- 自定义算法实现按精度去4舍5入处理double的数据
- 对double类型的数据 进行4 舍5入
- Java中关于 BigDecimal 的double入参的构造函数导致的数据似乎损失精度的bug
- 控制double,float类型数据的精度
- Double型数据的精度问题
- 实现double数值的精度加减乘除运算
- BigDecimal 数据计算与精度舍入
- 关于double类型的数据算法失真处理
- 数据精度问题的处理
- double 的精度问题
- Double的精度问题
- 如何处理浮点数(float, double)的精度问题
- float、double计算中精度丢失的处理
- double数据运算 保存精度 .
- JSP 自定义标签实现数据精度格式化
- 关于java的double类型数据运算精度失真
- double类型的数据存入电脑失精度
- 从算法的角度去考虑处理海量数据。
- excel入门,如何玩转excel,你早该这么玩Excel笔记7
- POJ 1845 Sumdiv <数论(逆元 / 二分递归)>
- codeforces 7C Line
- MFC 软件登陆界面的实现(可以用来做启动画面,添加bmp图片,然后给图片加点击响应事件。)
- 数据库--mongodb(一):使用命令
- 自定义算法实现按精度去4舍5入处理double的数据
- 二维数组
- LeetCode 199 Binary Tree Right Side View(二叉树层序遍历)
- vs 2017 找不到stdio.h 文件问题
- 利用nodejs的简单web聊天
- php虚拟主机配置
- CNN学习(二)
- No exception of type BeansException can be thrown; an exception type must be a sunclass of Throwable
- web测试方法总结