Zahlenwerte wie 1,23 und 34,5 sind kleine Zahlen, nicht wahr? Es ist keine ganze Zahl. 1.0 und 34.0 sind ebenfalls gebrochen, können aber auch als Ganzzahlen bezeichnet werden.
Brüche wie 1/3 sind ebenfalls keine ganzen Zahlen. Ein 3/3 Bruch kann als ganze Zahl bezeichnet werden.
Hier definieren wir eine solche Ganzzahl. "Zusätzlich zu 1 und 34 Zahlen mit 0 nach dem Dezimalpunkt wie 1,0 und 3,0 und Brüche mit demselben Molekül und Nenner"
In diesem Artikel wird untersucht, wie Literale bestimmt werden, die gebrochen oder gebrochen, aber auch ganzzahlig sind.
Für reine Ganzzahlen und Brüche müssen Sie lediglich eine Zahl in die Variable eingeben, wie unten gezeigt.
a = 123
b = 123.4
print(a)
print(b)
# 123
# 123.4
Wenn Sie dagegen bei Brüchen "1/4" wie oben schreiben, wird der Berechnungsprozess automatisch ausgeführt, sodass er nicht ausgedrückt werden kann. Daher werden wir Pythons Standardbibliotheksfraktionen verwenden.
from fractions import Fraction
f = Fraction(1, 3)
print(f)
# 1/3
Für Brüche kann dies mit der Methode is_integer () ermittelt werden.
n = 1.23
print(n.is_integer())
# False
m = 1.00
print(m.is_integer())
# True
Es kann jedoch nicht für die gebrochene Darstellung unter Verwendung von Brüchen verwendet werden.
from fractions import Fraction
f = Fraction(1, 3)
print(f.is_integer())
# AttributeError: 'Fraction' object has no attribute 'is_integer'
Was ist, wenn ich die Methode is_integer () nicht für Brüche verwenden kann? Wenn Sie das als Bruch definierte Literal in einen Bruch (Float-Typ) konvertieren, sollte die Methode is_integer () einwandfrei funktionieren.
Ein als Bruch definiertes Literal wird durch Teilen durch ~~ 1,0 in einen Bruch umgewandelt. ~~ Bitte weisen Sie im Kommentarbereich darauf hin Ich habe es so geändert, dass es intuitiv und leicht verständlich ist, wenn man "float (hoge)" verwendet.
Durch Sandwiching dieser Operation ist es möglich, nach der Methode is_integer () zu beurteilen.
from fractions import Fraction
f = Fraction(1, 3)
g = float(f)
x = Fraction(3, 3)
y = float(x)
print(g)
print(y)
# 0.3333333333333333
# 1.0
print(g.is_integer())
print(y.is_integer())
# False
# True
Ich werde auch eine Umleitungsbeurteilungsmethode einführen, die ich zu der Zeit dachte, als ich die Existenz von is_integer nicht kannte.
** Wenn die nach dem Dezimalpunkt aufgerundete Zahl und die nach dem Dezimalpunkt abgerundete Zahl übereinstimmen, wird sie als Ganzzahl beurteilt ** Wir werden uns auf der Grundlage der Idee nähern.
Wenn Sie beispielsweise für die Zahl 1.1 nach dem Dezimalpunkt aufrunden, ist dies 2. Im Gegenteil, es ist 1, wenn es nach dem Dezimalpunkt abgerundet wird. Dies ist keine Ganzzahl, da die Zahlen nicht übereinstimmen.
Wenn es 1.0 ist, ist es gleich 1, ob es aufgerundet oder abgerundet ist. Wenn dies also eine ganze Zahl ist, ist dies der Grund.
Ceil () -Methode der Mathematikbibliothek zum Aufrunden Durch Verwendung der floor () -Methode der Mathematikbibliothek zur Abwertung ist eine solche Bestimmung möglich. Die folgenden Funktionen gelten auch für Brüche wie 1.23.
from fractions import Fraction
import math
def isInteger(n):
nx = math.ceil(n)
ny = math.floor(n)
return (nx == ny)
n = Fraction(1, 3)
m = Fraction(3, 3)
print(isInteger(n))
print(isInteger(m))
# False
# True
Recommended Posts