VBS将字符串转换为浮点数

时间:2015-03-13 16:52:31

标签: vbscript

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

3 个答案:

答案 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)

遵循以下程序可以提供帮助:

  1. 用字符串
  2. 中的逗号(“,”)替换点(“。”)
  3. 通过Cdbl
  4. 将字符串更改为double

    示例:

    dim a,b,c
    
    a="10.12"
    
    b="5.05"
    
    a=Replace(a,".",",")
    
    b= Replace(b,".",",")
    
    c=Cdbl(a)+Cdbl(b)
    
    msgbox c