Vbscript 我的性能费=(cdbl(TotforMonth)/100)*cdbl(trim(性能费))有什么问题?
在ASP中,这里有什么问题:Vbscript 我的性能费=(cdbl(TotforMonth)/100)*cdbl(trim(性能费))有什么问题?,vbscript,asp-classic,Vbscript,Asp Classic,在ASP中,这里有什么问题: MyPerfFee = (cdbl(TotforMonth)/100) * cdbl(trim(perfFee)) 我得到一个错误: Microsoft VBScript运行时错误“800a000d类型不匹配:'cdbl' /client_services/admin/commscalc.asp,第48行 这里的问题是,就VBScript而言,TotforMonth或perfFee不是数值。当处理数字字段时,最好在尝试计算之前检查外部源(平面文件、rdbms等)
MyPerfFee = (cdbl(TotforMonth)/100) * cdbl(trim(perfFee))
我得到一个错误:
Microsoft VBScript运行时错误“800a000d类型不匹配:'cdbl'
/client_services/admin/commscalc.asp,第48行
这里的问题是,就VBScript而言,
TotforMonth
或perfFee
不是数值。当处理数字字段时,最好在尝试计算之前检查外部源(平面文件、rdbms等)
比如说
然后像这样使用它
代码未经测试
有用的链接
TotforMonth=TotforMonth+cdbl(转换为alphanumericnew(计算(“总值”),“货币”,“字符串”))
,我认为这是一个可能的问题,我如何从数据库中获取一个数据为$400.4的列,然后我想要*0.1。要打印结果,您需要使用CDbl()对双精度浮点数执行计算,但在转换之前检查变量是否为数字非常重要,以避免运行时错误(这是Lankymart给出的示例函数的目的)。以小货币单位存储货币并将其作为常规整数(例如,1000美分而不是10美元)也是很常见的做法。我不建议这样做,但您可能可以使用Replace()
或InStr()
和Right()的组合
检查货币单位,并在转换前裁剪/更换货币单位。但正如Adam所说,你应该将货币单位和价值分开存储,这样计算起来就容易多了。