Jecho

导航

一个 float 变量赋值为 3.1 时, 为什么传到一个函数为 3.0999999 (困惑中)

一个 float 变量赋值为 3.1 时, 为什么传到一个函数为 3.0999999 (困惑中)

计算机数据的浮点表示和整数表示的数据编码方式是不一样的,计算机表示浮点数会存在一定误差。
正是由于计算机表示浮点数存在误差,因此在进行两个浮点数之间的比较时就不能像整数之间比较大小一样直接使用符号:大于,小于,等于了,下面举例说明

先说整数比较大小,比如比较两个int数据a,b的大小,很常见:
if(a > b) {
   a大于b
}<BR>
if(a < b) {
   a小于b
}
下面看浮点数,因为浮点数存在误差,因此不能直接用上面的方法比较大小,
还是假设有两个浮点数a,b:
if((a - b) > 0.00001) {
    a大于b,后面的0.00001的精度取决于当前系统的精度
}
小于的表示相信楼主能猜到了,但是判断浮点数是否相等有一点复杂。

posted on 2013-05-15 22:54  Jecho  阅读(314)  评论(0)    收藏  举报