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