domingo, 10 de marzo de 2013

Redondear números enteros y decimales

A continuación tenemos un ejemplo que nos permitirá, redondear números enteros y decimales utilizando la función Fix:

  • Función Fix: Devuelve la parte entera del número dado. Pero si el número es negativo, devuelve un número negativo mayor que o igual al número 


Código fuente


Paso 1: Función Listar_Unidades

Sub Listar_Unidades()
Try
  ListBox1.Items.Add("DiezMilesima")
  ListBox1.Items.Add("Milesima")
  ListBox1.Items.Add("Centesima")
  ListBox1.Items.Add("Decima")
  ListBox1.Items.Add("Unidad")
  ListBox1.Items.Add("Decena")
  ListBox1.Items.Add("Centena")
  ListBox1.Items.Add("Mil")
  ListBox1.Items.Add("Diez Mil")
Catch ex As Exception
    MessageBox.Show("Error...""vb.net"MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub


Paso 2: Llamar a la función Listar_Unidades

Private Sub redondear_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
   Listar_Unidades()
End Sub

Paso 3: Implementar función RoundI

Public Function RoundI(ByVal x As DoubleOptional ByVal d As Integer = 0) As Double
  Dim m As Double
  m = 10 ^ d
  If x < 0 Then
     RoundI = Fix(x * m - 0.5) / m
  Else
     RoundI = Fix(x * m + 0.5) / m
  End If
End Function

Paso 4: Programar ListBox

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.ObjectByVal e As System.EventArgsHandles ListBox1.SelectedIndexChanged
Try
   If (txtValor.Text <> ""Then
        
      Dim Unidad As String = ListBox1.Items.Item(ListBox1.SelectedIndex)
      Dim resultado As Double = CDbl(txtValor.Text)
      Select Case Unidad
        Case "DiezMilesima"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), 4)
        Case "Milesima"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), 3)
        Case "Centesima"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), 2)
        Case "Decima"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), 1)
        Case "Unidad"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), 0)
        Case "Decena"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), -1)
        Case "Centena"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), -2)
        Case "Mil"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), -3)
        Case "Diez Mil"
           txtRedondear.Text = RoundI(CDbl(txtValor.Text), -4)
     End Select
Else
    MessageBox.Show("Ingrese valor a redondear""vb.net"MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
Catch ex As Exception
    MessageBox.Show(ex.Message, "vb.net"MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub


Fuente de información

No hay comentarios:

Publicar un comentario