2012-01-17 63 views
0

文字列を10進数に変換せずに、小数点(小数点以下2桁)を文字列に追加する方法はありますか?vb.netの文字列に小数点を含めるにはどうすればいいですか?

たとえば、str1の値が100,100.0,100.00、または100.5,100.50 ... の場合、str1の値は100.00または100.50(小数点以下2桁)です。

+3

'CDec(myString).ToString(" D2 ")はそれほど大変なことではありません。キャストし、 'ToString'を呼び出してください。 – lsuarez

+1

vbは分かりませんが、C#で10進数に変換し、切り上げて文字列に変換します。http://stackoverflow.com/questions/257005/how-do-you-round-a-number-to-two -decimal-places-in-c – dierre

+0

私は 'CDec(myString).ToString(" D2 ")'で試しましたが、例外エラーが発生しました:ex.Message = "フォーマット指定子が無効でした。 これは私のコードです: 'Dim str1 As String =" 100.0 "' 'Dim str2 As String'' str2 = CDec(str1).ToString(" D2 ")' –

答えて

1
Public Function FormatNumber(ByVal s As String) As String 
    Dim pos As Integer = s.IndexOf("."c) 
    If pos = -1 Then ' No decimal point 
     Return s & ".00" 
    Else 
     Return (s & "00").Substring(0, pos + 3) 
    End If 
End Function 

そして、あなたは、C#タグを挿入するので:

public string FormatNumber(string s) 
{ 
    int pos = s.IndexOf('.'); 
    if (pos == -1) { // No decimal point 
     return s + ".00"; 
    } else { 
     return (s + "00").Substring(0, pos + 3); 
    } 
} 

をしかし、余分小数は切り捨てられますのでご注意 - 何の丸めは行われません!

0

はまだコメントを追加するので、追加のポストを免除することはできません...

lthibodeauxとdierreは正しいです。小数点以下に変換する方がはるかに優れています。それ以外の場合は、文字列内の小数点を検索し、見つかった場所に基づいてゼロを追加する関数を作成できます。問題は "13.876"のようなstrを取得した場合です。文字列を丸める方法を理解する必要があります。

簡単なルートに進みます。

0
Public Shared Function TwoDecimalString(input As String) As String 
    Dim output As String 
    Dim splittedInput As String() = input.Split("."C) 
    If splittedInput.Length = 1 Then 
     output = input & ".00" 
    Else 
     output = splittedInput(0) & "." & splittedInput(1).PadRight(2, "0"C) 
    End If 
    Return output 
End Function 
関連する問題