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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado] Establecer la cantidad de dígitos a la derecha de la coma [C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Establecer la cantidad de dígitos a la derecha de la coma [C]  (Leído 8,524 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
[Solucionado] Establecer la cantidad de dígitos a la derecha de la coma [C]
« en: 9 Enero 2016, 15:34 pm »

Hola.
El programa que muestro a continuación lo que hace es separar los dígitos que se encuentran a la izquierda de la coma y los que se encuentran a la derecha, o sea, la parte entera y la parte fraccionaria de una variable double, hasta hay todo bien, el error lo tengo cuando el bucle for no coincide con la cantidad de dígitos fraccionarios.-
Alguien me puede decir si es posible establecer cuantos dígitos ha ingresado el operador a la derecha de la coma, he intentado por todos los medios a mi alcance (lectura y búsqueda en la web) y no pude lograrlo.-

Código
  1. #include <stdio.h>
  2. #include <float.h>
  3.  
  4. int main( void ){
  5. double numero , decimal;
  6. int entero, x = 1, ok, ch;
  7.  
  8. do{
  9. printf("\n Ingrese un numero con decimales...: ");
  10. ok = scanf( "%lf", &numero ) == 1 && numero > 0.00 && numero <= DBL_MAX;
  11. while ((ch = getchar()) != EOF && ch != '\n');
  12. }while(!ok);
  13.  
  14. entero = (int)numero;
  15. decimal = numero - entero;
  16.  
  17. while(x <= 4 ){
  18. decimal  *=10;
  19. x++;
  20. }
  21.  
  22. printf("\n La parte fraccionaria..:%g\n", decimal);
  23.  
  24. return 0;
  25. }

Desde ya muchas gracias
Saludos


« Última modificación: 19 Enero 2016, 14:28 pm por NOB2014 » En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #1 en: 9 Enero 2016, 16:36 pm »

Hace no mucho se ha tratado este tema en el foro
http://foro.elhacker.net/programacion_cc/super_solucionado_separar_parte_decimal_y_parte_fraccionaria_en_lenguaje_c-t446426.0.html


En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #2 en: 9 Enero 2016, 16:49 pm »

Hola MAFUS.
Debo suponer que estabas apurado (¿...?), ese post lo di de alta yo y además son cosas distintas, caso contrario lo ubiera continuado.-

Saludos.
« Última modificación: 9 Enero 2016, 16:58 pm por NOB2014 » En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #3 en: 9 Enero 2016, 17:04 pm »

Citar
el error lo tengo cuando el bucle for no coincide con la cantidad de dígitos fraccionarios.


Alguien me puede decir si es posible establecer cuantos dígitos ha ingresado el operador a la derecha de la coma

Qué bucle for. Qué operador.
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #4 en: 9 Enero 2016, 17:11 pm »

Mil disculpas, el bucle es while y el operador es el que tipea el teclado.-
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #5 en: 9 Enero 2016, 17:29 pm »

Lo puedes hacer de otra forma: pilla el número como una cadena de caracteres. Usa las ventajas de trabajar con cadenas para conseguir saber cuántos caracteres hay detrás de la coma. Después transforma esa cadena en un double con strtod si necesitas el valor numérico.
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #6 en: 9 Enero 2016, 17:47 pm »

Hola
Lo que sucede es que el manual de donde saque el ejercicio dice que utilice el tipo float, en realidad tube que hacerlo con double porque si se ingresa por Ej. 123.045 el cero inmediatamente después de la coma hace que el resultado sea incorrecto (solo en este caso, cero después de la coma), no dice que se pueda hacer con cadena.-
Tal vez lo que estoy pidiendo no se pueda, caso contrario vos o ivancea92 ya lo hubieran descubierto.-

Saludos y gracia por ocuparse.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #7 en: 9 Enero 2016, 17:57 pm »

Si lo que queires es saber el número de dígitos decimales de un número, te pongo 2 opciones. La priemra, la que dijo MAFUS, leerlo como cadena, comprobar los dígitos, y ya luego convertirlo a float;
Otra solución, puede ser algo del estilo de:

Código
  1. float n = 456.789;
  2. int digitos = 0;
  3. while( (float)(int)n != n){
  4.    digitos += 1;
  5.    n *= 10;
  6. }

Si quieres lograr otra cosa, explícalo mejor.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #8 en: 9 Enero 2016, 18:35 pm »

Lo malo de los reales en computación que siguen el IEEE 754, como en caso de C, C++, etc. es que cuándo se pasan a entero pierden precisión. El caso presentado por ivancea96 es uno de ellos. Así da como resultado 5 dígitos decimales.
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C]
« Respuesta #9 en: 9 Enero 2016, 20:15 pm »

Hola.
ivancea96 es eso precisamente lo que quiero lograr, saber la cantidad de dígitos que hay después de la coma y lo que dice MAFUS es correcto (resultado = 5 dígitos).-
Me cuesta creer que haya algo que en C no se pueda hacer, seguiremos intentando, no me voy a dar por vencido tan pronto.-     

Saludos.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] Establecer detalles de un EXE
Programación Visual Basic
aaronduran2 5 5,886 Último mensaje 2 Septiembre 2009, 15:37 pm
por aaronduran2
[Python] - Cantidad de Dígitos
Scripting
ChicoMaravilla 4 14,803 Último mensaje 7 Diciembre 2010, 02:31 am
por lnvisible
Establecer ruta con nircmd(solucionado)
Scripting
Dark Invader 3 2,865 Último mensaje 6 Agosto 2011, 22:17 pm
por SuperDraco
[SOLUCIONADO] Permitir solo una coma en un textbox
.NET (C#, VB.NET, ASP)
Eleкtro 4 5,708 Último mensaje 15 Enero 2013, 16:48 pm
por Eleкtro
limitando cantidad de digitos en jtextfield Netbeans
Java
jelsir 3 3,033 Último mensaje 30 Julio 2016, 22:41 pm
por Once
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines