elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ceros a la derecha.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ceros a la derecha.  (Leído 3,492 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Ceros a la derecha.
« en: 17 Noviembre 2023, 01:27 am »

Hola:

A la salida del programa en C# me muestra estos valores.

52.21

51.63

Como puedes ver arriba, ninguno termina en 0.

Si fuese 52.2 y 51.6

En el programa quiero que se añada un 0 a la derecha y se me queda con dos decimales, por ejemplo, quedaría así:

52.20

51.60

Solo si muestra solo un decimal, si muestra 52.21, tiene que ser 52.21, no 52.210 que sería tres decimales.



En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.413


Hackentifiko!


Ver Perfil
Re: Ceros a la derecha.
« Respuesta #1 en: 17 Noviembre 2023, 07:33 am »

Se me ocurre:

Método 1:
Código:
NumSinDecimales = (función que los quita, en algunos lenguajes es floor).
Si NumOriginal > NumSinDecimales
   // NumOriginal es decimal.
   LargodelNumOriginal = (función que mide el largo, puede requerir convertir el número en cadena o crear otra variable que sea el número pero en cadena).
   LargodelNumsinDecimales = (lo mismo pero aplicado a NumsinDecimales).
   Si LargodelNumOriginal - LargodelNumsinDecimales == 2 (creo)
      Salida = NumOriginal + "0" (en algunos lenguajes puede requerir convertir el número en cadena, la idea es agregarle un 0).

Método 2:
Sería un código que mire caracter por caracter. Si encuentra un "." comenzaría a contar cuántos hay luego. Si sólo hay 1, agrega un 0. No es tan fácil como para mostrarte un ejemplo, pero tampoco es tan, tan complicado.

Método 3:
Si el número es decimal, multiplícalo *10. Si ya no lo es, divídelo entre 10 y agregale un 0 como ya te expliqué.


En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Ceros a la derecha.
« Respuesta #2 en: 18 Noviembre 2023, 23:42 pm »

Hola:

Muy engorroso lo vi, me olía que hay algo más sencillo y es esto.

Código
  1. string salida = "51.2";
  2.  
  3. Console.Write(salida.PadRight(5, '0'));

Ver PadRight


Muchas gracias.
En línea

elektrostudios2

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Ceros a la derecha.
« Respuesta #3 en: 21 Febrero 2024, 09:44 am »

me olía que hay algo más sencillo y es esto.

Código
  1. string salida = "51.2";
  2. Console.Write(salida.PadRight(5, '0'));

En realidad, al trabajar con valores numéricos, lo más recomendable (e igual de sencillo) es aplicar un formato adecuado directamente al valor numérico mediante la funcionalidad provista para ello. El uso de funciones de relleno (padding), aunque te de el resultado esperado, se reserva para alinear cadenas de texto.

Dicho esto, y para empezar, hay que tener en cuenta dos cosas en ese código que has compartido:

1. Estás asignando valores numéricos como cadenas de texto.

2. Estás usando el delimitador de decimales americano en las cadenas de texto, probablemente dentro de un contexto en español.

Teniendo esas dos cosas en cuenta, la solución adecuada a tu entorno se vería tal que así:

Código
  1. Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en");
  2.  
  3. string value = "51.2";
  4. string valueFormatted = $"{double.Parse(value):N2}";
  5. Console.WriteLine(valueFormatted);

O expresado de forma ligeramente distinta:

Código
  1. string value = "51.2";
  2. string valueFormatted = string.Format(CultureInfo.GetCultureInfo("en"), "{0:N2}", double.Parse(value));
  3. Console.WriteLine(valueFormatted);

Aténtamente,
Elektro.
« Última modificación: 21 Febrero 2024, 19:35 pm por elektrostudios2 » En línea

   
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Ceros a la derecha.
« Respuesta #4 en: 2 Marzo 2024, 11:01 am »

Muchas gracias, es bueno saberlo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[DUDA] Contador con ceros a la izquierda
Programación Visual Basic
HJZR4 6 3,834 Último mensaje 20 Octubre 2008, 21:18 pm
por ssccaann43 ©
Donde estan los ceros? o.O
Programación Visual Basic
extreme69 8 3,622 Último mensaje 1 Noviembre 2011, 05:00 am
por extreme69
eliminar registros con ceros
.NET (C#, VB.NET, ASP)
luis456 5 3,860 Último mensaje 12 Noviembre 2014, 12:35 pm
por luis456
triangulo de ceros y unos vb
Programación Visual Basic
elsrtenedor 6 2,999 Último mensaje 7 Junio 2019, 15:50 pm
por Serapis
Como leo estos Bits de derecha a izquierda o izquierda a derecha ?
Programación C/C++
FFernandez 1 4,854 Último mensaje 8 Octubre 2021, 00:12 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines