文字列を10進数に変換せずに、小数点(小数点以下2桁)を文字列に追加する方法はありますか?vb.netの文字列に小数点を含めるにはどうすればいいですか?
たとえば、str1の値が100,100.0,100.00、または100.5,100.50 ... の場合、str1の値は100.00または100.50(小数点以下2桁)です。
文字列を10進数に変換せずに、小数点(小数点以下2桁)を文字列に追加する方法はありますか?vb.netの文字列に小数点を含めるにはどうすればいいですか?
たとえば、str1の値が100,100.0,100.00、または100.5,100.50 ... の場合、str1の値は100.00または100.50(小数点以下2桁)です。
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);
}
}
をしかし、余分小数は切り捨てられますのでご注意 - 何の丸めは行われません!
はまだコメントを追加するので、追加のポストを免除することはできません...
lthibodeauxとdierreは正しいです。小数点以下に変換する方がはるかに優れています。それ以外の場合は、文字列内の小数点を検索し、見つかった場所に基づいてゼロを追加する関数を作成できます。問題は "13.876"のようなstrを取得した場合です。文字列を丸める方法を理解する必要があります。
簡単なルートに進みます。
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
'CDec(myString).ToString(" D2 ")はそれほど大変なことではありません。キャストし、 'ToString'を呼び出してください。 – lsuarez
vbは分かりませんが、C#で10進数に変換し、切り上げて文字列に変換します。http://stackoverflow.com/questions/257005/how-do-you-round-a-number-to-two -decimal-places-in-c – dierre
私は 'CDec(myString).ToString(" D2 ")'で試しましたが、例外エラーが発生しました:ex.Message = "フォーマット指定子が無効でした。 これは私のコードです: 'Dim str1 As String =" 100.0 "' 'Dim str2 As String'' str2 = CDec(str1).ToString(" D2 ")' –