[PYTHON] Entspricht die Zahl einer Ganzzahl?

Einführung

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.

Was ist die Ausdrucksmethode für Brüche?

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

Leicht zu unterscheidende Brüche

Versuchen Sie, den Bruch mit der Methode is_integer () zu bestimmen

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

Versuchen Sie, den Bruch mit der Methode is_integer () zu bestimmen

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'

Konvertieren Sie Brüche in Brüche und wenden Sie is_integer () an

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

Bonus: Was ist, wenn Sie nicht über die Methode is_integer () verfügen?

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

Entspricht die Zahl einer Ganzzahl?
[Frage] Bei der zufälligen Waldregression von sk-learn tritt ein Fehler auf, wenn die Anzahl der Parallelen auf -1 gesetzt wird.
Was ist ein Algorithmus? Einführung in den Suchalgorithmus] ~ Python ~
[Einführung in AWS] Das erste Lambda ist Transcribe ♪
Eine Einführung in die Datenanalyse mit Python - Um die Anzahl der Videoansichten zu erhöhen -
So identifizieren Sie die Systemrufnummer ausyscall
Ein Artikel, der die Fallstricke von Python zusammenfasst
[Ruby on Rails] Von der Anwendungserstellung bis zum Serverstart und wie lautet die Portnummer?
[Dimensionsfluch] Wenn die Anzahl der Sensoren auf ∞ geändert wird, kann eine Abnormalität festgestellt werden?
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
So erstellen Sie einen Artikel über die Befehlszeile
Wie man die Portnummer des xinetd-Dienstes kennt
So ermitteln Sie die Anzahl der Stellen in Python
Speichern Sie das von pyqtgraph gezeichnete Diagramm in einem Bild
Bestimmen Sie, ob im Objekt ein Attribut definiert ist
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Python (2) erfordert self, da die Methode eine Instanzmethode ist
[Python] Warum die IDs der referenzierten Objekte gleich sind, wenn verschiedenen Variablen dieselbe Ganzzahl zugewiesen wird
[Für Anfänger] Ich möchte die Anzahl der Lernerfahrungen leicht verständlich erklären.
So geben Sie eine unendliche Anzahl von Toleranzen in der Überprüfung der numerischen Argumentvalidierung von argparse an
VisibleDeprecationWarning: Die Verwendung einer Nicht-Ganzzahl anstelle einer Ganzzahl führt in Zukunft zu einem Fehler
Der Weg nach Pythonista
Der Weg nach Djangoist
Was ist ein Iterator?
Ich möchte initialisieren, wenn der Wert leer ist (Python)
So finden Sie die optimale Anzahl von Clustern für k-means
Lösen der Nummernsortierung (entspricht Paiza Rang D) in Python
[Python] Ändern Sie den Namen der Bilddatei in eine Seriennummer
So manipulieren Sie das DOM im Iframe mit Selen
Wenn ein Ingenieur gebeten wird, ein Bankett zu veranstalten
Versuchen Sie, die Genauigkeit der Twitter-ähnlichen Zahlenschätzung zu verbessern
Code zum Senden von E-Mails basierend auf der Excel-E-Mail-Liste
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
Lassen Sie uns eine externe Spezifikation erstellen, die einfach zu handhaben ist
Eine Einführung in die moderne Socket-API zum Erlernen in C.
Ich möchte den EDINET-Code und die Wertpapiernummer zuordnen
Ändern Sie das Installationsziel, wenn --user zu pip hinzugefügt wird
Die Geschichte, den privaten Schlüssel mit chmod auf 600 zu setzen
Gibt es ein Geheimnis in der Häufigkeit der Umfangszahlen?