浮点数计算问题,为什么会有偏差?

王朝干货·作者佚名  2011-11-30
窄屏简体版  字體: |||超大  

Q : 浮点数计算问题,为什么会有偏差?

主要解答者: ChengKing 提交人: ChengKing

感谢: wuyi8808、fangxinggood、FlashElf、chenyuming2004

审核者: zeusvenus 社区对应贴子: 查看

A :

由于计算机里的数据是用二进制表示的,也就是说我们定义的int/float类型等存储到计算机里后都是转换为二进制形式表示的。等用到时,它会再自动把二进制数据转换为相应的:int/float等十进制类型,供我们使用. 二进制与十进制不是一一对应的, 例如"根2"值为1.414..... , 用二进值表示肯定会不准确,所以计算机是用近似值表示的.那么当取出来转换为十进制时(这个过程不存在误差,因为任何一个二进制数都梢宰既返淖晃剖?也就可能会有一些微小的转换误差(并不是所有的十进制数转换为二进制数都有误差的,无穷数比如:根3这样的数转换二进制数才会产生误差).

一般是这样用的,举个例子判断一个数是否为零的方法:

int zero=10*E-6; //自己定义精确度

public bool JudgeZero(int num)

{

if(Math.fabs(num-0) < zero)

{

return true;

}

return false;

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航