单精度就可以了。
int((1949995.10)*100+(77498.38)*100)/100

解决方案 »

  1.   

    money也是一样的,我才换成单精度型。怎样让它计算时保留正确的两位,而不是四舍五入,哎,急死我了,
      

  2.   

    检查一下你参与计算的数字吧,里面是否有3位小树,虽然只显示两位,但它是四舍五入的
    比如:1949995.104+77498.384=272484.498 四舍五入后= 272484.50sqlserver可以用cast函数解决:你看一下下面的一段查询,access是否有同样的函数就不知道了,不过最好还是规范你的数据源SELECT CAST(1949995.104 AS decimal(10, 2)) + CAST(77498.384 AS decimal(10, 2)) AS aa, 
          CAST(1949995.104 + 77498.384 AS decimal(10, 2)) AS bb, 
          1949995.104 + 77498.384 AS cc
      

  3.   

    在职合计中 
    应发合计=149937.28 在aCCESS中,显示为149937.28 单击显示为:149937.275817871 
    离退合计中 
    应发合计=461023.05 .....................................461023.04864502 
    全院总计 
      应发合计=610906.32........................................610960.324462891 
    要求为: 
    应发合计=610906.33 对,就是这样,在个人工资中是固定的两位数字,单击后也是两位,但在求和后,这些就变成小数后一长串了。
    我的意思是让它只涉及两位数字计算,不要后面的这一串东西。因为个人工资中是固定的两位数字,加减后,一定是两位。就象: 
    23.57-12.33=11.24 
    不要那么复杂。这个数据定义成什么类别最好。一天了,让这拦住了。 
    谁作过工资呀,你们是怎么做的,怎么处理这种情况呢。fuxc(Michael),请帮助在access 2000中怎么处理呢,计算后仍是两位,不要那么多。
    这个问题不该有多难,那么多金融计算,应该有一个好办法的。
      

  4.   

    我一开始用的money,也是有误差的,换了半天也不行,就差文本型的了。
      

  5.   

    我用string,取出后,自己计算,就不会出现问题了(自己编个取小数点后位数的函数)
      

  6.   

    还有你数据保存的时候是否确定已是小数两位,最好用format(,"0.00")格式一下在保存
    数据,用round函数会有问题,这样就跟你字段数据类型无关(不管是double,single型)了
      

  7.   

    输入绝对是二位,根本没有用round,我怕它还来不及
      

  8.   

    ACCESS下面试了一下,果然不行
    我看你在更新数据之前,在VB里用FORMAT函数处理成2位在写进数据库吧或者用整型,内部都以分为单位处理,输出时/100就行了,用UPDATE更新一下数据库,统一乘以100,再改数据类型,这样的话处理程序基本不用变,输出之前SELECT **/100 ... 就可以了。
      

  9.   

    用numeric类型 在他的后面可以设置小数点的位数 而且都是四舍五入的
      统计的时候  也都是两位  ,如果是统计的结果不放在表里 ,那只好用format了
      

  10.   

    工资=format(工资,"0.00")     '保留两位小数
    工资=format(工资,"0.0")      '保留一位小数本人有工资软件, http://china-soft.3322.net
      

  11.   

    我试过了,在access2000中定义字段salary 为双精度型 格式 为常规数字,小数位 2
    程序中
    工资=format(工资,"0.00") 工资变量类型为double型,为single型时 工资值在(如1949995.10 )format后会有误差 然后保存到数据库中
    用sql 合计时得到你所想要的正确结果