C/Visual C - Redondeo de enteros

 
Vista:
sin imagen de perfil
Val: 29
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Redondeo de enteros

Publicado por Josema (17 intervenciones) el 28/09/2017 17:04:19
Lo típico es que la gente pregunte como redondear decimales, pero esta vez quiero preguntar como se redondearía un entero, para que todos los números de detrás siempre sean 0.
Ejemplo: 15-> 10, 37->30, 1524->1000

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Redondeo de enteros

Publicado por Tom (602 intervenciones) el 28/09/2017 17:29:01
Pues sí, no es precisamente redondear eso que propones ...
La rutina log10() de la libm hace lo que parece, obtener el logaritmo en base 10 de una cantidad, lo que viene a ser el número de dígitos que tiene (en decimal).
A partir de ahí es obvio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Redondeo de enteros

Publicado por Josema (17 intervenciones) el 28/09/2017 17:59:59
Pues no me sale nada claro... me da un numero largo sin sentido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Redondeo de enteros

Publicado por Tom (602 intervenciones) el 01/10/2017 11:34:27
¿¿ Sin sentido ??
1
2
3
4
5
6
7
8
9
10
11
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
 
int main(int argc, char *argv[]) {
	long test = 323456L;
	double f = pow(10.0, (trunc(log10((double)test))));
	long res = (test / (long)f) * (long)f;
 
	printf("Test: %ld\nRes : %ld\n", test, res);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Redondeo de enteros

Publicado por Capitan Kirk (97 intervenciones) el 03/10/2017 09:37:48
Es más fácil efectuar la división y luego multiplicar. Al tratarse de enteros, al hacer la división se pierde el resto, por ejemplo:

15 / 10 = 1 (resto 5, que se pierde)
1 * 10 = 10

327 / 100 = 3 (resto 27, que se pierde)
3 * 100 = 300

Aunque no sé qué sentido tiene lo del "redondeo" en enteros.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar