Dezimalstellen von Float abschneiden und verwenden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kiaralle
User
Beiträge: 171
Registriert: Donnerstag 19. August 2021, 19:11

Hallo,

ich komme wieder nicht weiter.
Gibt es etwas, mit dem ich von Float ohne Umwege die Dezimalstellen abtrennen kann?
Ich benötige nur die Dezimalstellen für eine Berechnung.

x = 1234.5678

Ich benötige 0.5678

Danke :-)
Benutzeravatar
__blackjack__
User
Beiträge: 14324
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Verschiedene Möglichkeiten:

Code: Alles auswählen

In [9]: x
Out[9]: 1234.5678

In [10]: x % 1
Out[10]: 0.5678000000000338

In [11]: math.modf(x)
Out[11]: (0.5678000000000338, 1234.0)

In [12]: x - math.trunc(x)
Out[12]: 0.5678000000000338
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
kiaralle
User
Beiträge: 171
Registriert: Donnerstag 19. August 2021, 19:11

__blackjack__ hat geschrieben: Freitag 16. Januar 2026, 17:40 Verschiedene Möglichkeiten:

Code: Alles auswählen

In [9]: x
Out[9]: 1234.5678

In [10]: x % 1
Out[10]: 0.5678000000000338

In [11]: math.modf(x)
Out[11]: (0.5678000000000338, 1234.0)

In [12]: x - math.trunc(x)
Out[12]: 0.5678000000000338
Danke :wink:
Benutzeravatar
snafu
User
Beiträge: 6952
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Code: Alles auswählen

x - int(x)
Sirius3
User
Beiträge: 18368
Registriert: Sonntag 21. Oktober 2012, 17:20

Vorsicht bei negativen Zahlen:

Code: Alles auswählen

In [10]: x = -1234.5678

In [11]: x%1
Out[11]: 0.43219999999996617

In [12]: math.modf(x)
Out[12]: (-0.5678000000000338, -1234.0)

In [13]: x - math.trunc(x)
Out[13]: -0.5678000000000338

In [14]: x - int(x)
Out[14]: -0.5678000000000338
Pedroski55
User
Beiträge: 41
Registriert: Freitag 25. Juli 2025, 00:20

Es geht auch so:

Code: Alles auswählen

# sollte auch mit num < 0 fertig werden
def dezi(num):
    if not type(num) == float:
        print(f'Eingabe: "{num}" nicht gut, nochmal versuchen ja?')
        return None    
    else:
        w = str(num)
        teile = w.split('.')
        dezimal = '0.' + teile[1]
        res = float(dezimal)
        if '-' in w:
            res = -res
        return res
    
res = dezi(12.3456789)
print(f'res = {res:.15e}')
print(f'res = {res:.15f}')
print(f'res = {res:.3g}')
Antworten