VB.net 转换为十进制(放置顺序)
Posted
技术标签:
【中文标题】VB.net 转换为十进制(放置顺序)【英文标题】:VB.net convert , to decimal (order of placement) 【发布时间】:2016-02-25 13:17:26 【问题描述】:您好,我有一个文本框,如果您使用小数,则可以完美地进行一些数学计算,如果您使用逗号,则不是这样。我探索的第一个选项是只接受蒙面文本框中的数字和小数...但是为什么呢?我们中的一些人从上学开始就学会了使用逗号......所以我的想法是有一个文本框来搜索逗号并将它们转换为用户的小数。
我有以下代码,但例如,如果我输入 2,5,我的转换将变为 25。所以是的,我已将逗号转换为十进制但丢失了它的位置。因此,问题是如何使用正确的小数位正确进行转换?
If TextBox13.Text.Contains(",") Then
TextBox13.Text = Replace(TextBox13.Text, ",", ".")
dim test as double textbox1.text
msgbox(test)
End If
【问题讨论】:
【参考方案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(",", ".")
【讨论】:
【参考方案2】:您是否尝试将字符串转换为十进制或双精度?
Dim 测试为 Decimal = CDec(textbox1.Text) 或者 Dim test as Double= CDbl(textbox1.Text)
【讨论】:
以上是关于VB.net 转换为十进制(放置顺序)的主要内容,如果未能解决你的问题,请参考以下文章