Python decimal 模块,ROUND_UP 实例源码

我们从Python开源项目中,提取了以下11个代码示例,用于说明如何使用decimal.ROUND_UP

项目:drmr    作者:ParkerLab    | 项目源码 | 文件源码
def make_time_string(days=0, hours=0, minutes=0, seconds=0):
    total_seconds = (
        (days * 24 * 60 * 60) +
        (hours * 60 * 60) +
        (minutes * 60) +
        seconds
    )
    hours = total_seconds // (60 * 60)
    total_seconds -= hours * 60.0 * 60.0
    minutes = total_seconds // 60
    total_seconds -= minutes * 60.0
    seconds = total_seconds

    hours = decimal.Decimal(hours).quantize(decimal.Decimal('1.'), decimal.ROUND_UP)
    minutes = decimal.Decimal(minutes).quantize(decimal.Decimal('1.'), decimal.ROUND_UP)
    seconds = decimal.Decimal(seconds).quantize(decimal.Decimal('1.'), decimal.ROUND_UP)
    return '{:02f}:{:02f}:{:02f}'.format(hours, minutes, seconds)
项目:biweeklybudget    作者:jantman    | 项目源码 | 文件源码
def get(self):
        setting = db_session.query(DBSetting).get('credit-payoff')
        if setting is None:
            pymt_settings_json = json.dumps({'increases': [], 'onetimes': []})
        else:
            pymt_settings_json = setting.value
        pymt_settings_kwargs = self._payment_settings_dict(pymt_settings_json)
        ih = InterestHelper(db_session, **pymt_settings_kwargs)
        mps = sum(ih.min_payments.values())
        payoffs = self._payoffs_list(ih)
        return render_template(
            'credit-payoffs.html',
            monthly_pymt_sum=mps.quantize(Decimal('.01'), rounding=ROUND_UP),
            payoffs=payoffs,
            pymt_settings_json=pymt_settings_json
        )
项目:flask-zhenai-mongo-echarts    作者:Fretice    | 项目源码 | 文件源码
def __init__(self, min_value=None, max_value=None, force_string=False,
                 precision=2, rounding=decimal.ROUND_HALF_UP, **kwargs):
        """
        :param min_value: Validation rule for the minimum acceptable value.
        :param max_value: Validation rule for the maximum acceptable value.
        :param force_string: Store as a string.
        :param precision: Number of decimal places to store.
        :param rounding: The rounding rule from the python decimal library:

            - decimal.ROUND_CEILING (towards Infinity)
            - decimal.ROUND_DOWN (towards zero)
            - decimal.ROUND_FLOOR (towards -Infinity)
            - decimal.ROUND_HALF_DOWN (to nearest with ties going towards zero)
            - decimal.ROUND_HALF_EVEN (to nearest with ties going to nearest even integer)
            - decimal.ROUND_HALF_UP (to nearest with ties going away from zero)
            - decimal.ROUND_UP (away from zero)
            - decimal.ROUND_05UP (away from zero if last digit after rounding towards zero would have been 0 or 5; otherwise towards zero)

            Defaults to: ``decimal.ROUND_HALF_UP``

        """
        self.min_value = min_value
        self.max_value = max_value
        self.force_string = force_string
        self.precision = precision
        self.rounding = rounding

        super(DecimalField, self).__init__(**kwargs)
项目:rectpack    作者:secnot    | 项目源码 | 文件源码
def float2dec(ft, decimal_digits):
    """
    Convert float (or int) to Decimal (rounding up) with the
    requested number of decimal digits.

    Arguments:
        ft (float, int): Number to convert
        decimal (int): Number of digits after decimal point

    Return:
        Decimal: Number converted to decima
    """
    with decimal.localcontext() as ctx:
        ctx.rounding = decimal.ROUND_UP
        places = decimal.Decimal(10)**(-decimal_digits)
        return decimal.Decimal.from_float(float(ft)).quantize(places)


# Sorting algos for rectangle lists
项目:django-konfera    作者:pyconsk    | 项目源码 | 文件源码
def currency_round_up(money):
    return money.quantize(Decimal('1.00'), rounding=ROUND_UP)
项目:django-oscar-bluelight    作者:thelabnyc    | 项目源码 | 文件源码
def consume_items(self, offer, basket, affected_lines):
        """
        Same as ValueCondition.consume_items, except that it returns a list of consumed items. This
        is needed for CompoundCondition to be able to correctly consume items.
        """
        applicable_lines = self.get_applicable_lines(offer, basket, most_expensive_first=True)
        applicable_line_ids = set(line.id for __, line in applicable_lines)

        value_consumed = D('0.00')
        affected_lines = list(affected_lines)
        for line, __, qty in affected_lines:
            if line.id in applicable_line_ids:
                price = self._get_unit_price(offer, line)
                value_consumed += price * qty

        to_consume = max(0, self.value - value_consumed)
        if to_consume == 0:
            return affected_lines

        for price, line in applicable_lines:
            quantity_to_consume = (to_consume / price).quantize(D(1), ROUND_UP)
            quantity_to_consume = min(line.quantity_without_discount, quantity_to_consume)
            line.consume(quantity_to_consume)
            affected_lines.append((line, 0, quantity_to_consume))
            to_consume -= price * quantity_to_consume
            if to_consume <= 0:
                break
        return affected_lines
项目:transformer    作者:zapier    | 项目源码 | 文件源码
def func_roundup(a, places=0):
    """ functor for round up with decimal places """
    return Decimal(a).quantize(Decimal(10) ** -places, rounding=ROUND_UP)
项目:dsmr-reader    作者:dennissiemensma    | 项目源码 | 文件源码
def round_decimal(decimal_price):
    """ Round the price to two decimals. """
    if not isinstance(decimal_price, Decimal):
        decimal_price = Decimal(str(decimal_price))

    return decimal_price.quantize(Decimal('.01'), rounding=ROUND_UP)
项目:dsmr-reader    作者:dennissiemensma    | 项目源码 | 文件源码
def _round_precision(self, float_number, fill_count):
        """ Rounds the number for precision. """
        if not isinstance(float_number, Decimal):
            float_number = Decimal(str(float_number))

        rounded = float_number.quantize(Decimal('.001'), rounding=ROUND_UP)
        return str(rounded).zfill(fill_count)
项目:extrade    作者:aza7    | 项目源码 | 文件源码
def normalized(d, where=None, place=8):
    amo_pla = (Decimal("10") ** -place)
    if where == 'C': where = ROUND_CEILING
    if where == 'DOWN': where = ROUND_DOWN
    if where == 'F': where = ROUND_FLOOR
    if where == 'HD': where = ROUND_HALF_DOWN
    if where == 'HE': where = ROUND_HALF_EVEN
    if where == 'HP': where = ROUND_HALF_UP
    if where == 'UP': where = ROUND_UP
    if where == '0UP': where = ROUND_05UP
    return (Decimal(d).quantize(amo_pla, rounding=where or ROUND_UP)).normalize()
项目:money-to-prisoners-send-money    作者:ministryofjustice    | 项目源码 | 文件源码
def clamp_amount(amount):
    """
    Round the amount to integer pence,
    rounding fractional pence up (away from zero) for any fractional pence value
    that is greater than or equal to a tenth of a penny.
    @param amount: Decimal amount to round
    """
    tenths_of_pennies = (amount * Decimal('1000')).to_integral_value(rounding=ROUND_DOWN)
    pounds = tenths_of_pennies / Decimal('1000')
    return pounds.quantize(Decimal('1.00'), rounding=ROUND_UP)