我有一个数字是从数据库里面取出的,该数据库的字段数字类型是decimal 13,至少要保留4位小数
,我从这个字段取到数后要赋给一个变量fquantity,这个变量我设成single(dim fquantity as single),但是发现有的时候这个数本来是0的,传递到后面的时候却变成了一个莫名奇妙的数字,我觉得很奇怪,我估计是我的申明错了。那么应该如何声明呢?还有就是金额,应该如何声明?麻烦问一下大家。

解决方案 »

  1.   

    decimal 13?
    是什么数据库?
    (但是发现有的时候这个数本来是0的,传递到后面的时候却变成了一个莫名奇妙的数字)
    上代码看看
      

  2.   

    SQL SERVERCREATE TABLE [dbo].[m_QuantityBalance] (
    [MYear] [int] NOT NULL ,
    [MPeriod] [int] NOT NULL ,
    [FQuantity] [decimal](23, 10) NULL ,
    [MMoney] [MONEY] NULL 
    ) ON [PRIMARY]
    GO
      

  3.   

    double没有试过,那为什么single不行呢?很奇怪
      

  4.   

    可能精度不够吧,还有Decimal也可试下, 这方面没啥经验,就不多猜了
      

  5.   

    [FQuantity] [decimal](23, 10) NULL ,
    从以上看出FQuantity字段为decimal类型,整数部分长度13位,小数部分长度10位,总长度23位。sql server的
    decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个确定的数字表达法;没有存储值的近似值。
    vb6的
    单精度变量总长度8位(含小数点),如8.123456、8123.456
    双精度变量总长度16位(含小数点),如1234567890123.45、1234567890.12345把它放入无论是单精度变量还是双精度变量都必然造成精度上的不准确,但不会出现楼主说的莫名奇妙的数字;考虑把它放入VB的Decimal变量或Currency变量都会好些。金额,应该如何声明?
    Currency 数据类型在货币计算与定点计算中很有用,在这种场合精度特别重要。