以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  赋值赋得小数不见了,是程序bug吗?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=10079)

--  作者:lrj03
--  发布时间:2011/5/20 10:38:00
--  赋值赋得小数不见了,是程序bug吗?

 Dim dr As DataRow
   dr=DataTables("明细清单").DataRows(0)
   Dim S0 As Double=0
   Dim s1 As Double=0
   Dim s2 As Double=0
   Dim s3 As Double=0
   Dim ye As Double=0


      For Each dr  In DataTables("明细清单").DataRows
        If dr("类型")="付款计划" AndAlso dr("期数")<Vars("qishu")  Then
              S0 = S0 + dr("金额")
        End If
        If dr("类型")="付款计划" AndAlso dr("期数")=Vars("qishu")  Then
              S1 = S1 + dr("金额")
        End If
        If dr("类型")="收款" AndAlso dr("期数")<Vars("qishu")+0.5  Then
              S3 = S3 + dr("金额")
        End If

      Next
              s2=s0+s1
              ye=s3-s2

   Dim r As Row
   r=Tables("期数汇总").Rows(0)
   r("金额")=s0
   r=Tables("期数汇总").Rows(1)
   r("金额")=s2
    
output.show(s2)
output.show(r("金额"))
问题出在红色标记的语句中,output.show(s2)=1604672.42

                                 ,output.show(r("金额"))=1604672

     小数点后的.42不见了,这是怎么回事呢?怎么避免这状况?用乘100的值去运算,最后再除100来解决这问题吗?

[此贴子已经被作者于2011-5-20 10:48:42编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/5/20 10:50:00
--  

金额列的数据类型不对,改为双精度小数


--  作者:lrj03
--  发布时间:2011/5/20 11:05:00
--  
谢谢,原本"金额"列是设为单精度小数,现改为双精度小数,问题解决了