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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Medir la cantidad de decimales de un número.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Medir la cantidad de decimales de un número.  (Leído 289 veces)
Tachikomaia


Conectado Conectado

Mensajes: 1.224


Superhacker (es broma xD )


Ver Perfil
Medir la cantidad de decimales de un número.
« en: 11 Marzo 2024, 17:49 pm »

Puede que sea fácil pero no me sale.

N = un número que puede tener decimales o no, por ejemplo 8.3

NsinDecimales = (esto lo puedo hacer), 8.

Diferencia = N-NsinDecimales = 0.3

Si Diferencia > 0
  Tiene decimales.
  Decimales = (Largo de Diferencia)-2, puedo hacerlo.
sino
  Decimales = 0

¿Está bien?

Pero algo estoy haciendo mal en mi código porque no funciona bien, no sé.

Tengo una variable llamada DecimalesDelNaModificar que marca cuántos decimales debe tener como mínimo el N. Hago esto:
Código
  1. N = NOriginal/Math.pow(10, DecimalesDelNaModificar);
  2. if (DecimalesDelNaModificar>0) {
  3. LargoMinimodeDiferencia = DecimalesDelNaModificar+2;
  4. } else {
  5. LargoMinimodeDiferencia = 1;
  6. }
  7. if (String(NOriginal-N).length>=LargoMinimodeDiferencia) {
  8. // N tiene una cantidad aceptable de decimales.
  9.  

Si NOriginal es 19 y DecimalesDelNaModificar es 1, se hará 19/10 creo, resultando 1.9.
LargoMinimodeDiferencia será 3
19-1.9 = 17.1
Largo 4.
4 >= 3 por lo tanto es aceptable, correcto.

Si NOriginal es 20 y DecimalesDelNaModificar es 1, se hará 20/10 creo, resultando 2.
LargoMinimodeDiferencia será 3
20-2 = 18
Largo 2.
2 no >= 3 por lo tanto no es aceptable, correcto.

Pero el código me falla, no sé si en ese caso o en otro pero falla.

Además si la parte entera es suficientemente larga entonces creo que fallaría:
Si NOriginal es 2000 y DecimalesDelNaModificar es 1, se hará 2000/10 creo, resultando 200.
LargoMinimodeDiferencia será 3
2000-200 = 1800
Largo 4.
4 >= 3 por lo tanto es aceptable, pero debe tener 1 decimal mínimo y no lo tiene, ergo está mal.

Quizá basta con decir que si el NOriginal termina en 0 entonces no servirá, pero quiero entender qué tiene mal el o los métodos que dije. ¿Por qué fallan y cual es la solución?

Aquí un ejemplo tomado del mismo programa (DecimalesDelNaModificar es 2):
NOriginal: 19
N es: 0.19
String(NOriginal-N).length >= LargoMinimodeDiferencia:
5 >= 4, entonces es aceptable.
NOriginal: 20
N: 0.2
Si String(NOriginal-N).length >= LargoMinimodeDiferencia:
4 >= 4, entonceses aceptable.
Ahí falló, no es aceptable porque debe tener al menos 2 decimales como indica DecimalesDelNaModificar.

Mi código es un lío, ya ¿cómo lo arreglo?


« Última modificación: 11 Marzo 2024, 17:54 pm por Tachikomaia » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda javame. funcion para imprimir un numero flotante con pocos decimales
Java
josco 6 7,911 Último mensaje 30 Septiembre 2009, 12:33 pm
por egyware
Sacar decimales al Número PI
Programación C/C++
Komodo 6 10,300 Último mensaje 29 Abril 2010, 17:32 pm
por Tha_Traker
Numero con menos decimales...
Programación Visual Basic
.:BlackCoder:. 2 1,623 Último mensaje 24 Mayo 2010, 00:23 am
por .:BlackCoder:.
medir imagenes
Software
buthus 0 1,383 Último mensaje 3 Enero 2012, 16:34 pm
por buthus
obtener el número máximo y el número mínimo de matriz aleatoria c++
Programación C/C++
ra58alfa 2 4,408 Último mensaje 4 Julio 2018, 23:31 pm
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines