簡體   English   中英

VB.net 轉換為十進制(放置順序)

[英]VB.net convert , to decimal (order of placement)

嗨,我有一個文本框,如果您使用小數,則可以完美地進行一些數學計算,如果您使用逗號,則不是這樣。我探索的第一個選項是只接受蒙面文本框中的數字和小數...但是為什么呢? 自從我們第一次上學以來,我們中的一些人就學會了使用逗號......所以我的想法是有一個文本框來搜索逗號並將它們轉換為用戶的小數。

我有以下代碼,但例如,如果我輸入 2,5,我的轉換將變為 25。所以是的,我已將逗號轉換為十進制但丟失了它的位置。 因此,問題是如何使用正確的小數位正確進行轉換?

If TextBox13.Text.Contains(",") Then
TextBox13.Text = Replace(TextBox13.Text, ",", ".")
dim test as double textbox1.text
msgbox(test)
End If

為什么不將逗號設為非法條目。 無論如何不要阻止輸入字母。

Private Sub textBox1_KeyPress(sender As Object, e As KeyPressEventArgs)
    e.Handled = SingleDecimal(sender, e.KeyChar)
End Sub

Public Function SingleDecimal(sender As System.Object, eChar As Char) As Boolean
    Dim chkstr As String = "0123456789."
    If chkstr.IndexOf(eChar) > -1 OrElse eChar = Constants.vbBack Then
        If eChar = "." Then
            If DirectCast(sender, TextBox).Text.IndexOf(eChar) > -1 Then
                Return True
            Else
                Return False
            End If
        End If
        Return False
    Else
        Return True
    End If
End Function

其他解決方案可能是用字符串中的點替換逗號,然后將其傳遞回文本框。

If TextBox13.Text.Contains(",") Then
dim tempStr as string = TextBox13.Text
TextBox13.Text = Replace(tempStr, ",", ".")
dim test as double textbox1.text
msgbox(test)
End If

無論如何不應該這樣寫:

TextBox13.Text = tempStr.Replace(",", ".")

您是否嘗試過將字符串轉換為十進制或雙精度?

暗淡測試為 Decimal = CDec(textbox1.Text) 或暗淡測試為 Double= CDbl(textbox1.Text)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM