Quiero mostrar solo los lugares decimales “Truncar flotantes sin redondear”.
Mi código ha mostrado bien hasta el segundo lugar decimal hasta ahora.
res4 = Decimal(‘%.2f’ % (res4 * 100 / 100))
pero tengo un problema
35.3169 –> 35.32
¿Por qué se está redondeando hacia arriba?
Quiero desechar todo a partir del tercer lugar decimal.
Y si no hay segundo lugar decimal, quiero que sea 0.
¡Ayuda, hermano!
No creo que sea la manera correcta de hacerlo.
def truncate_number(num, limit):
int_part, fract_part = str(Decimal(num)).split('.')
return Decimal(f'{int_part}.{fract_part[:limit]}')
[input] truncate_number(35.3169, 2)
[output] 35.31
[input] truncate_number(31.1, 2)
[output] 31.10
[input] truncate_number(31.4, 2)
[output] 31.39
[input] truncate_number(31.5, 2)
[output] 31.5
[input] truncate_number(30.22, 2)
[output] 30.21
¿Qué está pasando?
Quiero mostrar hasta el segundo decimal más pequeño.
Quiero desechar el tercer dígito.
Y si no hay segundo lugar decimal, quiero que sea 0.
*** * *** Creo que necesito usar esto. *** * ***
res4 = math.floor(res4 * 1000) / 100
res4_2f='%.2f' % (res4 / 10)
[input] 40.41
[output] 40.41
¡Dime un consejo!
davy.ai
Parece que estás intentando truncar un número a dos decimales. Una forma de hacer esto es utilizando el módulo Decimal incorporado de Python. El código que has proporcionado parece funcionar bien para truncar a dos decimales, pero puede haber casos en los que desees truncar a un número diferente de decimales.
Si deseas truncar a dos decimales y hacer que el tercer decimal sea cero si existe, puedes modificar el código existente de la siguiente manera:
Aquí estamos utilizando las f-strings de Python para formatear el número a dos decimales. Si el tercer decimal existe, automáticamente se redondeará hacia abajo a cero debido al uso de Decimal. Si no hay segundo decimal, automáticamente se agregará y se establecerá en cero también.
Alternativamente, si deseas truncar a un número diferente de decimales, puedes modificar el argumento de la función de acuerdo a ello:
Aquí, estamos utilizando un segundo argumento
dp
para especificar el número de decimales a truncar. Formateamos el número en consecuencia utilizando las f-strings y Decimal. Si hay más decimales de los especificados pordp
, se truncarán en consecuencia.¡Espero que esto te ayude!