English 中文(简体)
如何四舍五入到某一小数点的浮点?
原标题:How to round a floating point number up to a certain decimal place?

附录一有<代码>8.8333333339,我希望将其改为8.84。 我如何能够在沙尔做到这一点?

<代码>(8.83333,33339, 2)>>>>>>> ,8.83, 而不是8.84。 总的来说,我是新鲜的,是为了粉碎或拟订方案。

我不想将其印成示,结果将进一步使用。 关于该问题的更多信息,请查询http://openbookproject.net/pybiblio/practice/wilson/loan.php” rel=“noreferer” Tim Wilson sshed Program Tips: 借用和付款计算器

最佳回答

<代码>8.83333339(或8.833333334,106.00/12, 适当四舍五入到两个小数位的<代码>8.83。 http://en.wikipedia.org 缩略语 模块的名称是ceil:

import math

v = 8.8333333333333339
print(math.ceil(v*100)/100)  # -> 8.84

相应地,下限和上限职能通常将实际数量描绘成最大以前或最小的单位,而下级单位为零点,因此,在2个小数点中,首先乘以10个<>2(或100)来改变小数点,然后由后方加以区别,以补偿。

如果您不希望使用<代码> 日标/代码> 由于某种原因,你可以使用这一模块(经例行测试)执行我刚才写道:

def ceiling(x):
    n = int(x)
    return n if n-1 < x <= n else n+1

How all this relates to the linked Loan and payment calculator problem:

“关于计算贷款产出的筛选摘要”/

∗∗∗∗∗ 月付款,也就是许多人所称的履行。 这意味着每个月支付的数额比每月多一点。 这使最后付款成为最低付款额——留下的差额仅为:<>_____________8.76/>>。

使用正常的圆环,每月支付<代码>8.83,最后支付<代码>8.87,同样有效。 然而,在现实的世界上,人们一般不想拿到他们的钱,因此,每次付款的四舍五入是常见的做法,也是更快地把钱退还给放款人。

问题回答

这是正常的(而且与Sharma无所作为),因为8.83不能完全作为双轨浮动代表,因为1/3不能确切地代表精髓(0.333333......在定点)。

如果你想确保绝对精确,你需要decimal 。 模块:

>>> import decimal
>>> a = decimal.Decimal("8.833333333339")
>>> print(round(a,2))
8.83

你们想要使用精子模块,但你也需要具体说明环流模式。 例如:

>>> import decimal
>>> decimal.Decimal( 8.333333 ).quantize(decimal.Decimal( .01 ), rounding=decimal.ROUND_UP)
Decimal( 8.34 )
>>> decimal.Decimal( 8.333333 ).quantize(decimal.Decimal( .01 ), rounding=decimal.ROUND_DOWN)
Decimal( 8.33 )
>>> 

更简单的办法就是简单地利用轮班的功能。 这里就是一个例子。

total_price = float()
price_1 = 2.99
price_2 = 0.99
total_price = price_1 + price_2

如果你完全照旧,现在你会收到。

3.9800000000000004

但是,如果你把它列入一回合,那么它就象这样的职能。

print(round(total_price,2))

产出相等

3.98

圆桌会议通过接受两个参数开展工作。 首先是你们想要四舍五入的人数。 第二是四舍五入点。

这样做最容易的方法是利用以下职能:

format()

例如:

format(1.242563,".2f")

产出如下:

1.24

同样:

format(9.165654,".1f")

would give:

9.2

如果是第8.83333339至2小数,正确的答案是8.83,而不是8.84。 你的理由是,8.83000 000001是无法正确更正的数字,最接近。 如果你想在不作任何改动的情况下印制,正如普遍定期审议小组所说:

print "%.2f" % 8.833333333339   #(Replace number with the variable?)

如果要四舍五入,8.84是不正确的答案。 8.83333 333轮值为8.83而不是8.84。 如果你想永远走下去,你就可以使用数学。 这两种方式与扼制格式相结合,因为四舍五入的浮标本身是有意义的。

"%.2f" % (math.ceil(x * 100) / 100)

仅供参考。 你可以这样做:

def roundno(no):
    return int(no//1 + ((no%1)/0.5)//1)

无需包括/进口

http://docs.python.org/library/decimal.html

ََََََ

这里是我解决四舍五入/倒闭问题的办法。

< .5  round down

> = .5  round up

import math

def _should_round_down(val: float):
    if val < 0:
        return ((val * -1) % 1) < 0.5
    return (val % 1) < 0.5

def _round(val: float, ndigits=0):
    if ndigits > 0:
        val *= 10 ** (ndigits - 1)
    is_positive = val > 0
    tmp_val = val
    if not is_positive:
        tmp_val *= -1
    rounded_value = math.floor(tmp_val) if _should_round_down(val) else math.ceil(tmp_val)
    if not is_positive:
        rounded_value *= -1
    if ndigits > 0:
        rounded_value /= 10 ** (ndigits - 1)
    return rounded_value

# test
# nr = 12.2548
# for digit in range(0, 4):
#     print("{} decimals : {} -> {}".format(digit, nr, _round(nr, digit)))

# output
# 0 decimals : 12.2548 -> 12
# 1 decimals : 12.2548 -> 12.0
# 2 decimals : 12.2548 -> 12.3
# 3 decimals : 12.2548 -> 12.25

我有这一法典:

tax = (tax / 100) * price

之后,该法典:

tax = round((tax / 100) * price, 2)

工作周

这是一项简单的职能:

def precision(num,x):
    return "{0:.xf}".format(round(num))

这里,南是小数。 x 是你希望四舍五入的精子。

与其他执行相比,其优势在于,它能够在ci的正确端填满零,使 number数目达到x de。

例1:

precision(10.2, 9)

回返

10.200000000(最多9个小点)

例2:

precision(10.2231, 2)

回返

10.22 (最多两点)





相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签