VB.net转换为十进制(放置顺序)

时间:2016-02-25 13:17:27

标签: vb.net decimal comma

嗨我有一个文本框,如果你使用小数字,如果你使用逗号,那么一些数学计算就完美了。我探索的第一个选项就是接受掩盖文本框中的数字和小数......但为什么呢?自从我们刚开始上学以来,我们中的一些人已经学会使用逗号...所以我的想法是有一个文本框,用于搜索逗号并将其转换为用户的小数。

我有以下代码,但作为示例,如果我输入2,5我的转换变为25.所以是的,我已将逗号转换为十进制但丢失了它的位置。因此,问题是如何通过正确的小数位置正确地进行转换?

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

2 个答案:

答案 0 :(得分:1)

为什么不将逗号视为非法入境。不管你是否阻止输入信件。

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(",", ".")

答案 1 :(得分:0)

您是否尝试将字符串转换为十进制或双精度?

  

Dim test as Decimal = CDec(textbox1.Text)    或者Dim测试为Double = CDbl(textbox1.Text)