from decimal import Decimal, ROUND_DOWN def truncate_decimal(value, decimal_places): """ Truncate a Decimal value to n decimal places without rounding. :param value: The Decimal value to truncate :param decimal_places: The number of decimal places to keep :return: Truncated Decimal value """ if isinstance(value, (int, float)): value = Decimal(str(value)) multiplier = Decimal(10**decimal_places) return (value * multiplier).to_integral_value(rounding=ROUND_DOWN) / multiplier