用vb编程序,两个数和结果用的都是single型,可是计算2.6-2时却得到0.5999999这个结果,到底是为什么呢?我试过的2.6和2.9和一些数相减时得到类似结果,相加时得到类似结果,别的还都正确,请各位大侠和编程高手多多指教

解决方案 »

  1.   

    http://topic.csdn.net/u/20080822/19/cf62c7ba-87d8-4c40-b7a1-a9f72e17de8e.html
    上述敛接有相同问题的讨论.
    那是芯片浮点运算的问题,与VB本身似乎无关. 
    至于单精度浮点数在内存的储存形式 
    Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38。Single 的类型声明字符为感叹号 (!)。 
    在内存以32位二进制形式存在: 
    XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX 
    第1位为符号位 
    第2-9位为阶码位 
    第10-32位为2进制小数尾值 
    即F2 ^ n * 1. XXXXXXX XXXXXXXX XXXXXXXX 
    其中 
    F为正号或负号(首为为0正数,首位为1负数 
    n为2-9位组成的BYTE数据值 
    XXXXXXX XXXXXXXX XXXXXXXX为尾数 
    详细请参阅本人的BLOG文章: 
    http://blog.csdn.net/zdingyun/archive/2008/06/09/2528026.aspx