2011-06-17 230 views
2

非典型四捨五入我測試一個系統,爲特定四捨五入 - 最後一個號碼總是四捨五入問題與蟒蛇

例如

  • 123,459應該產生123,46
  • 99,9911應該產生100,00

我怎麼能實現它的蟒蛇?

編輯

最重要的事情 - 這些數字的價格

+0

做到這一點。你基本上只是將精度降低到2位,這是完全不同的。另外,你使用小數點嗎? (我知道有些國家使用)如果是這樣,請將其更改爲。因爲大多數SO用戶會發現它很混亂。 – 2011-06-17 07:58:21

+0

這是「最後一個號碼」,爲什麼第二個例子不應該是'99,991'? – aioobe 2011-06-17 07:58:23

+0

你在使用'decimal'嗎?如果不是爲什麼不呢? – 2011-06-17 08:06:34

回答

4
import math 
def myRounding(x): 
    return math.ceil(x*100)/100.0 

注意的是,由於浮點不能夠表達所有小數,有些結果將無法用浮點數表示。如果這是一個問題,以定點數計算(即1.23由123表示,固定因子爲0.01),或使用decimal.Decimal

0

最後一個數字總是四捨五入。

此舍入到小數n-1其中n表示的小數點後的位數。

def roundupLast(x): 
    return round(x, len(str(x).split(".")[-1]) - 1) 


print(roundupLast(123.459)) # 123.46 
print(roundupLast(99.9911)) # 99.991 
print(roundupLast(99.9916)) # 99.992 
-1

您可以在秒例如最後一個數字是不是四捨五入使用格式化

NSNumber *Numero = 99.99 
NSNumberFormatter *Formatter = [[NSNumberFormatter alloc] init] ; 
[Formatter setNumberStyle:NSNumberFormatterDecimalStyle];  

//Formatter ROUNDING MODE 
[Formatter setRoundingMode:NSNumberFormatterRoundUp]; 

[Formatter setMinimumFractionDigits:2]; 
[Formatter setMaximumFractionDigits:2]; 

result = [Formatter stringFromNumber:Numero]; 
[Formatter release]; 
+0

這是Objective C;這個問題是關於Python的。 – 2011-06-22 12:10:14