以文本方式查看主题 - 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 -- 改成高精度就可以了,谢谢蓝版。 |