四舍五入算法

求数值四舍五入后的值最好的方法INT(I+0.5)。INT函数是相当于舍弃小数位的函数,将浮点数在数轴上向左移动找最接近的整数,找到后+0.5进行取正运算;

 

所述,使用INT函数将原有的数字进行+0.5然后取整。

1:用递归算法求解如下,

#include "stdafx.h"

#include "math.h"

/*

// 使用递归函数,求一个数值的四舍五入值

*/

int parseData(double value, int digite)

{

     if(digite == 0)                                              // 末尾加0.5

     {

         return ((int)(value += 0.5));

     }

     else                                                             // 继续取正

     {

         return (parseData(value*10,--digite));

     }

}

 

/*

// 使用递归函数,求一个数值的四舍五入值

*/

double Round(double value , int digite)

{

     int iValue = parseData(value,digite);

     int iPub = pow(10,digite);// 求10的digite平方

     return ((double)(iValue)/iPub);// 返回小数点精确位。精确位以后的数字舍弃,不准确。

}

 

int main(int argc, char* argv[])

{

     double dd = 0.125657;

     dd = Round(dd,3);

     cout << dd << endl;

     system("pause");

     return 0;

}

需要包括math.h;

编译环境:VC7.0

时间: 2024-09-17 20:06:19

四舍五入算法的相关文章

java的四舍五入算法

粗力度的四舍五入为整数 1 package math; 2 3 public class MathRoundTest { 4 /** 5 * Math类中提供了三个与取整有关的方法:ceil,floor,round, 6 * 这些方法的作用于它们的英文名称的含义相对应,例如:ceil的英文意义是天花板,该方法就表示向上取整, 7 * Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11:floor的英文是地板, 8 * 该方法就表示向下取整,Math.flo

日历中的日视图算法研究

问题描述 大家有没有人研究过Exchange中的日历日视图的显示算法,如下图所示:主要是各个日历项的宽度和位置(width,left)等属性值如何计算出来?谢谢各位大牛! 解决方案 解决方案二:估计用的绝对定位吧,这个要看html才知道解决方案三:这个你用量尺工具啊有的大小不同的解决方案四:楼上的,这里的定位肯定是用绝对定位的,但某一天中日程数据的条数是不固定的,如何计算所有日程项在当前页面中所占的宽度比例?和定位到离左边的距离?这才是关键,类似下面这种情况:这是我自己计算尽寸和定位的,但不是特

Li的横向排列自适应宽度问题

问题|自适应 众所周知,FF和OPERA即其它遵循CSS2标准的浏览器由于版本的不断改进,早就支持: display:table dispaly:table-cell dispaly:table-row dispaly:table-row- group dispaly:table-column dispaly:table-column-group 等属性. (至少是 FF1.0,OPERA7就能支持了,之前的就不太清楚了)那还犹豫什么?开始动手吧(为了演示加了一些 padding和border)

使用PHP实现二分查找算法代码分享

第一种方法: [二分查找要求]:1.必须采用顺序存储结构 2.必须按关键字大小有序排列. [优缺点]折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. [算法思想]首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表. 复制代码 代码如下: <?

EXCEL中求两个时间间隔多少小时的算法

今天收到学员来信要求计算两个时间点之间间隔多少小时的算法,同时还附带要求:每满30分钟按0.5小时计算,如25分钟为 0,45分钟只能计0.5小时.这个应用在计算加班工时中特别有用,现分享如下: 假设A列放置的是开始时间,B列放置是 结束时间,C列中求加班小时数. 开始时间 结束时间 加班小时数 ******** 8:00 ******** 16:00 8 ******** 8:00 ******** 15:30 7.5 ******** 16:00 ******** 0:00 8 ******

算法系列(十一) 圆生成算法

在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐 标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 + y2 = R2.在计算 机图形学中,圆和直线一样,也存在在点阵输出设备上显示或输出的问题,因此也需要一套光栅扫描 转换算法.为了简化,我们先考虑圆心在原点的圆的生成,对于中心不是原点的圆,可以通过坐标的 平移变换获得相应位置的圆. 在进行扫描转换之前,需要了解一个圆的特性,就是圆的八分对 成

C#中Math.Round()实现中国式四舍五入

原文:C#中Math.Round()实现中国式四舍五入 C#中Math.Round()实现中国式四舍五入   C#中的Math.Round()并不是使用的"四舍五入"法.其实在VB.VBScript.C#.J#.T-SQL中Round函数都是采用Banker's rounding(银行家算法),即:四舍六入五取偶.事实上这也是IEEE的规范,因此所有符合IEEE标准的语言都应该采用这样的算法. .NET 2.0 开始,Math.Round 方法提供了一个枚举选项 MidpointRou

德州扑克算法幕后研发者CMU博士Brown专访:AI如何打败顶级人类牌手?

在上个月举行的单挑无限注德州扑克( heads-up no-limit hold'em)人机对战中,由卡耐基梅隆大学研发的AI程序Libratus以每100手14倍大盲(译者注:缩写为14bb/100,意为玩100手牌,平均能赢对手14倍大盲注)完胜世界级人类玩家团队,震惊所有在场人员. 比赛共打12万手,最后Libratus赢得了1,776,250个筹码,近90个买入.虽然人类玩家输惨了,但幸运的是他们并不需要真的自掏腰包把输掉的钱给赢家Libratus(虽然他们来参加这场对战也需缴纳费用).

算法——贝叶斯

简介 学过概率理论的人都知道条件概率的公式:P(AB)=P(A)P(B|A)=P(B)P(A|B):即事件A和事件B同时发生的概率等于在发生A的条件下B发生的概率乘以A的概率.由条件概率公式推导出贝叶斯公式:P(B|A)=P(A|B)P(B)/P(A):即,已知P(A|B),P(A)和P(B)可以计算出P(B|A). 假设B是由相互独立的事件组成的概率空间{B1,b2,...bn}.则P(A)可以用全概率公式展开:P(A)=P (A|B1)P(B1)+P(A|B2)P(B2)+..P(A|Bn)