日期:2014-05-17  浏览次数:20840 次

为什么2个变量使用FormatNumber格式化后用加号不是计算而是连接
a,b在数据库均为数值(字段本身就是numeric型)
c=FormatNumber(a,2)+FormatNumber(b,2)

这样后c不是之和,而是做了连接了,如果
c=FormatNumber(a,2)*1+FormatNumber(b,2)*1
才为数值


------解决方案--------------------
我也觉得奇怪.
不过我看了一下手册
有如下描述:
-----------------------
运算符(+)
如果 则
两个表达式都是数值 相加
两个表达式都是字符串 连接
一个表达式是数值,另一个表达式是字符串 相加
-----------------------
FormatNumber 函数

返回表达式,此表达式已被格式化为数值。
-----------------------
这里说的是返回表达,没有说返回数值.

测试:MsgBox(TypeName(FormatNumber(1.55555,2)))
显示:String
说明:FormatNumber()返回的确实是字符串.

测试:MsgBox( "1.5 "*1+1)
显示:2.5
说明:数值型字符串表达式做算术运算时自动被转换成数值类型.

唉,微软的东东就是莫名其妙.
------解决方案--------------------
c=clng(FormatNumber(a,2))+clng(FormatNumber(b,2))

这样才行。