2015-03-13 552 views
1
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),沒什麼效果。確實有一個簡單的解決方案,但我不會找到它。VBS將字符串轉換爲浮點

編輯:解

result = CDbl(Replace(strnumber,".",",") + add 
+0

這應該按原樣工作。我在我的機器上進行了測試,結果如此。如果沒有別的,嘗試用'result = CDbl(strnumber)+ CDbl(add)' – 2015-03-13 17:04:17

+0

我仍然得到3.1(現在在另一臺機器上) – user2366975 2015-03-13 17:47:21

回答

1

您要添加兩個數字。所以,你應該使用數字(而不是字符串(strnumber)和一個數字(補充):

>> 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()從數字中刪除/舍入分數。

+0

我從文本字段中讀取「字符串號」,因此沒有實數。文字是文字。一旦我嘗試過'replace'部分,但是不能與CDbl結合使用。現在它可以工作。這樣愚蠢的時間消耗問題,dooh。 – user2366975 2015-03-13 18:01:35

1

與您的區域設置的事情。自動轉換(以及明確的轉換)以與CStr()函數中相同的方式進行觀察。

E.g.在我的語言環境CStr(0.3)結果爲0,3,這與CDbl("0,3")相反,而CDbl("0.3")導致錯誤。

BTW:始終使用option explicit,並進行調試,On Error Goto 0