Last active
December 17, 2018 15:36
-
-
Save fabidick22/7a63d97e10fca221ecbc9c2b0f56893a to your computer and use it in GitHub Desktop.
entero, flotante mas cercano python, redondear a un numero primo.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
EJEMPLOS: | |
get_round(2.25) | |
Out[3]: 2.5 | |
get_round(2.30) | |
Out[4]: 2.5 | |
get_round(2.55) | |
Out[5]: 3.0 | |
""" | |
def get_round(valor, prime_of=50): | |
""" | |
Funcion para redondear a un numero flotante a un numero primo mas cercano. | |
D.A. Redondeando el un numero flotante a valores primos mas cercanos. | |
Si sucede algun error, retorna el valor minimo establecido | |
""" | |
str_total = str(valor).split(".") | |
valor_primo_de = 0 if not prime_of else prime_of | |
# trabajar con dos numeros | |
if len(str_total[1]) == 1: | |
str_total[1] = str('{:<02d}'.format(int(str_total[1]))) | |
redondear_decimal = intround(int(str_total[1])) | |
if redondear_decimal == 0: | |
return str_total[0] | |
else: | |
sum_decimal = 0 | |
for valorDecimal in range(redondear_decimal, 101): | |
if valorDecimal % valor_primo_de == 0: | |
# convertir a float | |
valorDecimal = str(valorDecimal) | |
if len(valorDecimal) >= 3: | |
sum_decimal = 1 | |
else: | |
sum_decimal = float("." + valorDecimal) | |
break | |
res = float(int(str_total[0]) + sum_decimal) | |
return res | |
def intround(n, p=2): | |
""" | |
Funcion para redondear un entero. | |
D.A. Sirve para redondear un enteros a la cantiada de numeros especificada, por defecto: 2 (ejemplo: 2493 -> 25) | |
:param n: Numero a redondear | |
:param p: Cantidad de numero que desea, por defecto 2. | |
:return: Retorna un entero del numero redondeado. | |
""" | |
if p == 0 or n == 0: | |
return n | |
if p > 0: | |
ln = len(str(n)) | |
p = p-ln+1 if n<0 else p-ln | |
return int(str((n + 5 * 10**(-p-1)) // 10**-p * 10**-p)[:2]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment