why the two number after the decimal point are always converted to two zeros

piscis

Regular
Joined
Jun 30, 2003
Messages
54
Gentlemen:


Does anyone knows why the two number after the decimal point are always converted to two zeros with the code below?

Example:

If the real value was 175.53

I only get 175.00

Why is this?

Code:
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

        Dim MyRegEx As New Regex("=\s+(?<MyPat>\d+)")
        Dim s As String = txtDataView.Text
        Dim Mc As MatchCollection = MyRegEx.Matches(s)
        Dim M As Match
        Dim i As Integer
        If Mc.Count > 0 Then
            i = 0
            For Each M In Mc
                i += 1
                PutInTextBox(Me, "TextBox" & CStr(i), M.Groups("MyPat").Value)
            Next
        End If

    End Sub



    Private Sub PutInTextBox(ByVal ContainerCtrl As Control, ByVal TBName As String, ByVal msg As String)
        Dim ctl As Control
        For Each ctl In ContainerCtrl.Controls
            If TypeOf ctl Is TextBox And ctl.Name = TBName Then
                ctl.Text = msg
                Exit For
            Else
                PutInTextBox(ctl, TBName, msg)
            End If
        Next

        TextBox75.Text = Sd
        TextBox76.Text = St

    End Sub
 
I am just starting to work with regular expressions so excuse me if I'm off base, but doesn't \d+ match one or more instances of a digit? So wouldn;t that stop at the decimal point?
 
I am not sure. Since a dot signifies any character except newline, you need a way to override that an just look for a character dot. I'm not sure of the answer.
 
This is untested, but try this. It adds one optional decimal point followed by 0 or more digits:

Code:
"=\s+(?<MyPat>\d+[.{0,1}][\d]*)"

You might need a backslash in front of the "." but I don't think so.

The {0,1} says 0 or 1 occurrences of the ".". The final \d with a * says 0 or more digits. If you really want 0, 1, or 2 digits you can change it.

-Nerseus
 
Back
Top