以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]求值出错?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179294)

--  作者:bigeng
--  发布时间:2022/8/17 8:39:00
--  [求助]求值出错?
图片点击可在新窗口打开查看相乘应该等于492,差1.
代码为:Select Case e.DataCol.Name
    Case "亏吨", "运价","调整金额"
        If dr("亏吨") >= 0 Then
            dr("应付金额") = Math.Floor(dr("实收数") * dr("运价") + dr("调整金额"))
        Else
            dr("应付金额") = Math.Floor(dr("原发数") * dr("运价") + dr("调整金额")) 
        End If 
End Select

--  作者:有点蓝
--  发布时间:2022/8/17 8:48:00
--  
调试

msgbox(dr("实收数") * dr("运价") + dr("调整金额"))
msgbox(Math.Floor(dr("实收数") * dr("运价") + dr("调整金额")))

--  作者:bigeng
--  发布时间:2022/8/17 9:22:00
--  
msgbox(Math.Floor(dr("实收数") * dr("运价") + dr("调整金额")))图片点击可在新窗口打开查看

--  作者:bigeng
--  发布时间:2022/8/17 9:23:00
--  
图片点击可在新窗口打开查看msgbox(dr("实收数") * dr("运价") + dr("调整金额"))
--  作者:bigeng
--  发布时间:2022/8/17 9:24:00
--  
但是这里的值我需要取整且不四舍五入。


--  作者:有点蓝
--  发布时间:2022/8/17 9:35:00
--  
3个列都是什么类型的列?

msgbox(dr("实收数"))
msgbox(dr("运价"))
msgbox(dr("调整金额"))

--  作者:bigeng
--  发布时间:2022/8/17 9:38:00
--  
双精度类型
--  作者:有点蓝
--  发布时间:2022/8/17 9:48:00
--  
改为高精度列:http://www.foxtable.com/webhelp/topics/1829.htm

Dim a As Double = 32.8 * 15
Dim b As Decimal = 32.8 * 15
Output.Show(a = b)
Output.Show(math.Floor(a))
Output.Show(math.Floor(b))

或者使用变量转换一下:
dim r as Decimal  = dr("实收数") * dr("运价") + dr("调整金额")
dr("应付金额") = Math.Floor(r)

--  作者:bigeng
--  发布时间:2022/8/17 9:57:00
--  
改成高精度就可以了,谢谢蓝版。