簡體   English   中英

半圓形實施

[英]Implement half round down

只有當小數部分大於一半時,Python中是否有一種方法可以將數字四舍五入? roundmath.ceil會這樣做:

round(X.5) => X+1
math.ceil(X.5) => X+1

但是,我想要這個:

x.500...000001 => x+1
x.500...000000 => x

怎么做?

我有2.7.13 python x64

math.ceil(x-0.5)

地圖:

12.50 -> ceil(12.00) -> 12
12.49 -> ceil(11.99) -> 12
12.51 -> ceil(12.01) -> 13

你可以這樣做:

round(X - 0.00000000001)

您需要確定適當的小數位數,請記住浮點數不准確,因此例如10000000000000000000.5無法表示。

我找到了jonrsharpe建議使用上下文的答案這就是我用它的方式:

from decimal import *
x =5.500000000000001   # it is the number wanted to round, however only takes 15 number after decimal for me
ctx= Context(prec=1, rounding=ROUND_HALF_DOWN)
y = ctx.create_decimal(x)  

但是,我不知道它是否適合所有人。 可能有一個更好的方式來表達它。

import math
while True:
    num=input("num: ")
    num=float(num)
    new_n=round(num,0)
    if (float(new_n)-0.5)==num:
        print(num-0.5)
    else:
        print(new_n)

輸出:

num: 4.5
4.0
num: 5.5
5.0
num: 6.6
7.0
num: 5.5001
6.0

好吧,我不得不做一些思考,但這應該做你想要的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM