本站网址: YippeeSoft开心软件
1208 float 浮点数 int 乘法 奇怪 四舍五入 1
四舍五入
四舍五入是一种应用非常广泛的近似计算方法,其有算术舍入法和银行家舍入法两种。
所谓算术舍入法,就是我们通常意义上的四舍五入法。其规则是:当舍去位的数值大于等于5时,在舍去该位的同时向前位进一;当舍去位的数值小于5时,则直接舍去该位。
所谓银行家舍入法,其实质是一种四舍六入五留双(又称四舍六入五奇偶)法。其规则是:当舍去位的数值小于5时,直接舍去该位;当舍去位的数值大于等于6时,在舍去该位的同时向前位进一;当舍去位的数值等于5时,如果前位数值为奇,则在舍去该位的同时向前位进一,如果前位数值为偶,则直接舍去该位。
(VB Round函数 描述 返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。)
口诀:
四舍六入五考虑,
五后非零就进一,
五后皆零看奇偶,
五前为偶应舍去,
五前为奇要进一
:“四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一。”就是说,如果省略的尾数最高位是4或小于4,就将尾数都舍去;如果省略的尾数最高位是6或大于6,去掉尾数后,要向它的前一位进1;
VB6中文版说这个函数是四舍五入函数,实际上这个函数采用的四舍六入五留双。VB的Round所采用的算法是这样的:
1.25留一位,则1.2=round(1.25)
如果是1.35,则1.4=round(1.35)
奇进偶不进。这样在一大串需要四舍五入的数相加相减相乘时误差小一点。eg:1.25+1.35+1.45+1.55+1.15+1.65=8.4=round(1.25)+round(1.35)+round(……
ROUND函数符合国家和国际标准,该函数是正确的。原先的四舍五入只是一个简化。
一个极其简单的函数,分别用VC6 BC31和LINUX GCC编译,都出现一个莫名其妙的问题:
int sfsf(float f)
&leftsign;
int sd=2000;
return (int)(f*sd);
&rightsign;
int main(int argc, char* argv[])
&leftsign;
float f=1.2435;
float ss=sfsf(f);
return 0;
&rightsign;
猜猜现在 SS 是多少? 2487 ? 呵呵,2486!!
原创文章,转载请注明: 转载自YippeeSoft开心软件
本文链接地址: 1208 float 浮点数 int 乘法 奇怪 四舍五入 1
历史博文
- yahoo domain - 2009
- 20080319 web wse gui - 2008
- 20070714 sql2005 sql server 2005 - 2007
- 0702 VC OCX 网页 HTML 资料 3 - 2006
评论