Home > Software engineering >  Vb.net how to get the number after decimal places
Vb.net how to get the number after decimal places

Time:08-24

in Vb.net how to get the number after decimal places.

I tried below code.

Dim number As Decimal = 143.500
Dim wholePart As Integer = Decimal.Truncate(number)
Dim fractionPart As Decimal = number - wholePart
Dim secondPart3 As Integer

secondPart3 = Replace(fractionPart, "0.", "0")

then the result is coming 500, but when i tried 143.050 its giving 50 it should show 050

Thanks

CodePudding user response:

Thanks everyone. i got it with sample below code

Dim numar As Double
If Double.TryParse(TextBox1.Text, numar) Then

    Dim rmndr As Double
    rmndr = numar Mod 1
    If rmndr = 0 Then
    Else
        TextBox2.Text = Split(CStr(TextBox1.Text), ".")(1)
    End If
End If

CodePudding user response:

Your solution (here) is unnecessarily complex. You were on the right track in your original post, but conflated numeric values with formatted string values. Because while 050 are 50 are the same numeric value, when you implicitly call ToString on the value (or explicitly with the wrong formatting) then you would always get 50 because the prefixing 0 is unnecessary when working with numeric values.

What you should do is:

  1. Get the integral digits of the decimal value
  2. Convert the underlying decimal value to a String
  3. (optionally) Format the String specifying the level of precision
  4. Drop the integral digits off converted string

Here is an example:

Private Function GetFractionalDigits(value As Decimal) As String
    Dim integralDigits = Decimal.Truncate(value)
    Return value.ToString().Remove(0, integralDigits.ToString().Length   1)
End Function

Private Function GetFractionalDigits(value As Decimal, precisionSpecifier As Integer) As String
    If (precisionSpecifier < 0) Then
        Throw New ArgumentOutOfRangeException("precisionSpecifier", "precisionSpecifier cannot be less than 0")
    End If
    Dim integralDigits = Decimal.Truncate(value)
    Return value.ToString("N" & precisionSpecifier).Remove(0, integralDigits.ToString().Length   1)
End Function

Fiddle: https://dotnetfiddle.net/SBOXG0

  • Related