Autor
|
Tema: [Solucionado] Establecer la cantidad de dígitos a la derecha de la coma [C] (Leído 8,678 veces)
|
NOB2014
Desconectado
Mensajes: 366
|
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.- #include <stdio.h> #include <float.h> int main( void ){ double numero , decimal; int entero, x = 1, ok, ch; do{ printf("\n Ingrese un numero con decimales...: "); ok = scanf( "%lf", &numero ) == 1 && numero > 0.00 && numero <= DBL_MAX ; while ((ch = getchar()) != EOF && ch != '\n'); }while(!ok); entero = (int)numero; decimal = numero - entero; while(x <= 4 ){ decimal *=10; x++; } printf("\n La parte fraccionaria..:%g\n", decimal ); return 0; }
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.-
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
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
Mensajes: 3.412
ASMático
|
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
Mensajes: 366
|
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
Mensajes: 1.603
|
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
Mensajes: 366
|
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
Mensajes: 3.412
ASMático
|
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: float n = 456.789; int digitos = 0; while( (float)(int)n != n){ digitos += 1; n *= 10; }
Si quieres lograr otra cosa, explícalo mejor.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
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
Mensajes: 366
|
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.-
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[SOLUCIONADO] Establecer detalles de un EXE
Programación Visual Basic
|
aaronduran2
|
5
|
5,932
|
2 Septiembre 2009, 15:37 pm
por aaronduran2
|
|
|
[Python] - Cantidad de Dígitos
Scripting
|
ChicoMaravilla
|
4
|
14,850
|
7 Diciembre 2010, 02:31 am
por lnvisible
|
|
|
Establecer ruta con nircmd(solucionado)
Scripting
|
Dark Invader
|
3
|
2,920
|
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,773
|
15 Enero 2013, 16:48 pm
por Eleкtro
|
|
|
limitando cantidad de digitos en jtextfield Netbeans
Java
|
jelsir
|
3
|
3,087
|
30 Julio 2016, 22:41 pm
por Once
|
|