我是一个VB新手,自己没事看一点VB,自己动手做了一个计算器!虽然只是一个小小的计算器,自己也非常的高兴,没事经常打开计算器玩!(呵呵!别晕哦!新手对于刚做东东都是这样!)也是发现了一个问题,请教过几个人,都没有几决!(只是小儿科,所以他们没放在心上!:()所以只好来这请教了!问题:
    在用计算器计算时,只是结果是
0.1              0.01               0.001            或0.0001…………等等这类的结果时,得到的都不正确!用JAVA做的也不正常!不过自我理解应该是由双精度转成字符串造成的!哪位大虾能想到解决的办法吗?(不用0。1+1转成字符再把字符换成0。1)

解决方案 »

  1.   

    啊,太好了。今天发现这个弱弱的问题都有好多的人这么热心感动 ing ~~
    那我以后也可以提问了。
    一直以为这个里面都是高手。
    没有人帮我解答很低甚至是很白的问题的。
    现在好了发现和我差不多的人了。
    楼主我们一同努力。一起学习了
    加油呀。
    我现在计算器还不会做呢。
    哈哈。我的问题更多了。。
      

  2.   

    dim a as Double,b as Double
    a=5.5
    b=5.4
    //或者a=5.6  b=5.5   或者 a=5.55   b=5.54  只要差的是0.N1就出错
    msgbox a-b
    你们说出一的对话框的数字会是几呢??????^_^
    大家可别让我转成字符串再转过来哦~~~
      

  3.   

    按理说a=5.5
    b=5.4
    msgbox a-b
    应该出现一个对话框 0.1
    你可以去试一下!
      

  4.   

    呵呵,不要骂微软,你用JAVA做一个计算器试一下也有同样的问题~
    我想应该是由转DOUBLE转STRING时出现的!但是我想不从字符串上下手各位谁知道还什么办法吗?
      

  5.   

    回复人: province_(雍昊) ( ) 信誉:100 
    IMPOSSIBLE!我也希望IMPOSSIBLE,但是问题就是出现了!:(
      

  6.   

    楼主,你需要问问盖茨数据类型在内存中的表示方法!
    用Round函数解决你的问题,示例:Round((a - b), 5)
      

  7.   

    用Round函数 
    Round  是四舍五入函数,
    其实是四舍六入函数!
      

  8.   

    把代码贴上来看看~另外,在定义数据类型的时候,最好使用Long类型~~这关系到内存存储问题
    对所有的开发语言都是一样
      

  9.   

    //另外,在定义数据类型的时候,最好使用Long类型~~这关系到内存存储问题
    //对所有的开发语言都是一样应当是Double,Long型不能计算小数