2016-03-20 8 views
1

Ich brauche die letzten 2 Ziffern von ganzen Zahlen und Dezimalzahlen.Wie bekomme ich die letzten 2 Ziffern einer Zahl (Ganzzahl oder Dezimal)

Ich benutze number%100 Operator, um die letzten 2 Ziffern einer ganzen Zahl zu erhalten. Allerdings bekomme ich einen Fehler, wenn ich dasselbe auf eine Dezimalstelle versuche.

Gibt es einen einfachen Weg, um es zu tun, ohne in eine Zeichenfolge und Parsing zu konvertieren?

Beispiel:

number = 1234.56789 

I 89.

56789 % 100 = 89 

1234.56789 % 100 erhalten müssen gibt Fehler:

ValueError: invalid literal for int() with base 10 

Weitere Beispiele:

number = 0.1 

Ich brauche 0.1 (mit der Dezimalzahl).

+0

Hmmm ... von „letzten beiden Ziffern“ Meinen Sie, dass die letzten zwei Ziffern von 1013,145 wären 13? Oder 45? –

+0

Wissen Sie, wie viele Ziffern hinter der Dezimalzahl die Zahl haben wird? Oder vielleicht ein Maximum jenseits der Dezimalzahl? –

+0

Was wären die letzten beiden Ziffern, wenn die Zahl [0,1 + 0,2] ist (http://stackoverflow.com/questions/588004/is-floating-point-math-broken)? _ (Hinweis: Ausdruck ist ein Link). Wird es "30" oder "04" sein? –

Antwort

4

Hier ist eine funktionierende Lösung für Ihr Problem:

def last_2_digits_at_best(n): 
    return float(str(n)[-3:]) if '.' in str(n)[-2:] else int(str(n)[-2:]) 

print last_2_digits_at_best(1234.56789) 
print last_2_digits_at_best(123) 
print last_2_digits_at_best(0.1) 
print last_2_digits_at_best(1) 
print last_2_digits_at_best(0.1 + 0.2) 

Ausgang:

89 
23 
0.1 
1 
0.3 
4.5 
1.4 
+0

Ja, das funktioniert. Das ist die richtige Antwort. Löschen meiner, sobald Ihre als richtige Antwort markiert ist, da ich nicht kann, bis das OP seine Stimme ändert. –

Verwandte Themen