Vbscript VBS将字符串转换为浮点

Vbscript VBS将字符串转换为浮点,vbscript,Vbscript,我想得到0.4,但得到3.1。 我尝试了clng(strnumber)和int(strnumber),但没有任何效果。肯定有一个简单的解决方案,但我找不到 编辑:解决方案 Dim strnumber strnumber = "0.3" Dim add add = 0.1 Dim result result = strnumber + add MsgBox result 与您的区域设置有关。自动转换(以及显式转换)以与CStr()函数中相同的方式观察它 例如,在我的地区CStr(0.

我想得到
0.4
,但得到
3.1
。 我尝试了
clng(strnumber)
int(strnumber)
,但没有任何效果。肯定有一个简单的解决方案,但我找不到

编辑:解决方案

Dim strnumber
strnumber = "0.3"

Dim add
add = 0.1

Dim result 
result  = strnumber +  add

MsgBox result

与您的区域设置有关。自动转换(以及显式转换)以与
CStr()函数中相同的方式观察它

例如,在我的地区
CStr(0.3)
结果为
0,3
,与
CDbl(“0,3”)
相反,而
CDbl(“0.3”)
结果为错误


顺便说一句:始终使用
选项explicit
,出于调试目的,如果要添加两个数字,请在错误转到0时使用
。因此,您应该使用数字(而不是字符串(strnumber)和数字(add):

从输出(0,4)中可以看出,我使用的区域设置(德语)使用“,”作为小数点。但是文字总是使用“.”。因此,通过使用适当的数据类型,您可以以语言/区域设置独立的方式编写脚本,只要您不需要处理外部字符串数据(来自文件或用户输入)。然后,您必须修改输入,然后才能将其馈送到CDbl()之类的转换函数。对于可以使用Replace(inp、badmarker、goodmarker)完成的简单情况


另外,您说过您“尝试了clng(strnumber)和int(strnumber)”。您应该尝试了CDbl()。clng()尝试获取一个长整数(cf.CInt()),int()从数字中删除/舍入分数。

以下步骤可以帮助您:

  • 将字符串中的点(“.”)替换为逗号(“,”)
  • 通过Cdbl将字符串更改为double
  • 示例:

    >> n1 = 0.3
    >> n2 = 0.1
    >> r  = n1 + n2
    >> WScript.Echo r
    >>
    0,4
    

    这应该可以按原样工作。我在我的机器上测试了它,它成功了。如果没有其他问题,请尝试使用
    result=CDbl(strnumber)+CDbl(add)
    我仍然得到3.1(现在在另一台机器上)我读取了“字符串号”从一个文本字段,所以没有实数。文本就是文本。我曾经尝试过
    替换
    部分,但没有与CDbl组合。现在它可以工作了。多么愚蠢的耗时问题,嘟嘟。
    >> n1 = 0.3
    >> n2 = 0.1
    >> r  = n1 + n2
    >> WScript.Echo r
    >>
    0,4
    
    dim a,b,c
    
    a="10.12"
    
    b="5.05"
    
    a=Replace(a,".",",")
    
    b= Replace(b,".",",")
    
    c=Cdbl(a)+Cdbl(b)
    
    msgbox c