Dim strnumber
strnumber = "0.3"
Dim add
add = 0.1
Dim result
result = strnumber + add
MsgBox result
我希望获得0.4
作为结果,但获得3.1
。
我尝试了clng(strnumber)
和int(strnumber)
,没有任何作用。肯定有一个简单的解决方案,但我找不到它。
编辑:解决方案
result = CDbl(Replace(strnumber,".",",") + add
答案 0 :(得分:1)
与您的区域设置有关。自动转换(以及显式转换)以与CStr()
函数中相同的方式观察它。
E.g。在我的区域设置CStr( 0.3)
中,0,3
的结果反转为CDbl("0,3")
而CDbl("0.3")
导致错误。
BTW:始终使用option explicit
,并且出于调试目的,On Error Goto 0
答案 1 :(得分:1)
您想要添加两个数字。所以你应该使用数字(而不是字符串(strnumber)和数字(add):
>> n1 = 0.3
>> n2 = 0.1
>> r = n1 + n2
>> WScript.Echo r
>>
0,4
从输出(0,4)可以看出,我正在使用一个使用“,”作为十进制“点”的语言环境(德语)。但文字始终使用“。”。因此,只要您不需要处理外部字符串数据(来自文件或用户输入),通过使用正确的数据类型,您就可以以独立于语言/语言环境的方式编写脚本。然后你必须修改输入 之前将它输入到像CDbl()这样的转换函数。对于可以使用Replace(inp,badmarker,goodmarker)完成的简单案例。
P.S。你说你“尝试过clng(strnumber)和int(strnumber)”。你应该尝试过CDbl()。 CLng()尝试获取一个长整数(参见CInt()),Int()从数字中删除/舍入分数。
答案 2 :(得分:0)
遵循以下程序可以提供帮助:
示例:强>
dim a,b,c
a="10.12"
b="5.05"
a=Replace(a,".",",")
b= Replace(b,".",",")
c=Cdbl(a)+Cdbl(b)
msgbox c