Vbscript 我的性能费=(cdbl(TotforMonth)/100)*cdbl(trim(性能费))有什么问题?

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等)

在ASP中,这里有什么问题:

MyPerfFee = (cdbl(TotforMonth)/100) * cdbl(trim(perfFee))
我得到一个错误:

Microsoft VBScript运行时错误“800a000d类型不匹配:'cdbl' /client_services/admin/commscalc.asp,第48行


这里的问题是,就VBScript而言,
TotforMonth
perfFee
不是数值。当处理数字字段时,最好在尝试计算之前检查外部源(平面文件、rdbms等)

比如说


然后像这样使用它


代码未经测试


有用的链接

TotforMonth或perfFee都不是数字Yes,第一个似乎不是数字,即使它以0开头。在这之后,它得到了
TotforMonth=TotforMonth+cdbl(转换为alphanumericnew(计算(“总值”),“货币”,“字符串”))
,我认为这是一个可能的问题,我如何从数据库中获取一个数据为$400.4的列,然后我想要*0.1。要打印结果,您需要使用CDbl()对双精度浮点数执行计算,但在转换之前检查变量是否为数字非常重要,以避免运行时错误(这是Lankymart给出的示例函数的目的)。以小货币单位存储货币并将其作为常规整数(例如,1000美分而不是10美元)也是很常见的做法。我不建议这样做,但您可能可以使用
Replace()
InStr()
Right()的组合
检查货币单位,并在转换前裁剪/更换货币单位。但正如Adam所说,你应该将货币单位和价值分开存储,这样计算起来就容易多了。