3 回答

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個贊
import math
def weird_round(x):
if round(x % 1, 1) >= 0.9:
return math.floor(x) + 0.9
return math.floor(x) + 0.5
prices = [5.35, 10.91, 15.55]
for price in prices:
text = "{:.2f}".format(weird_round(price))
print(price, '->', text)
5.35 -> 5.50
10.91 -> 10.90
15.55 -> 15.50

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個贊
如果您有帶有小數(shù)部分的浮點(diǎn)數(shù),您可以使用第一個和第二個示例,其他所有數(shù)字(實(shí)際上是所有其他類型)您可以使用第三個和第四個。Num 是你的小數(shù)部分。x 是你的 0.5,y 是你的 0.9
def round(num, x, y) :
av = (x+y)/2
if num < av :
return x
return y
或者,如果你想傳遞像 15.98 這樣的數(shù)字:
def round(num, x, y) :
av = (x+y)/2
if num % 1 < av :
return int(num)+x
return int(num)+y
您可以致電:
round(15.98,0.5,0.9)
輸出:15.9
或者類似的東西:
def round(number):
x=0.5
y=0.9
if type(number) is float:
av = (x+y)/2
if number % 1 < av :
return int(number)+x
return int(number)+y
return number
所有這些都在四舍五入。如果你想四舍五入,建筑將是:
def round(number):
x=0.5
y=0.9
if type(number) is float:
av = (x+y)/2
from builtins import round as rd
if rd(number % 1,2 ) < av :
return int (number)+x
return int (number)+y
return number

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個贊
對于您提供的示例,此函數(shù)應(yīng)該可以解決問題:
def fixed_round(number):
decimal = number - int(number)
if (abs(0.5 - decimal)) < (abs(0.9 - decimal)):
return int(number) + 0.50
else:
return int(number) + 0.90
如果您希望它四舍五入為完整數(shù)字,在小數(shù)點(diǎn)更接近整數(shù)而不是 0.5 的情況下,您需要對此進(jìn)行調(diào)整;)
添加回答
舉報