[PYTHON] Vorsichtsmaßnahmen zum Runden von ganzen Zahlen durch Casting

Einführung

Das [ABC131 C-Problem] von AtCoder (https://atcoder.jp/contests/abc131/tasks/abc131_c) wurde gelöst, und ich habe versucht, einen Quotienten zu erhalten, indem ich ihn in den Typ int umgewandelt habe. Ich habe diesen Artikel geschrieben, weil sich das Berechnungsergebnis von dem Fall der Verwendung des Kindes unterschied.

Tatsächlicher Code

Beim Versuch, den Quotienten von 103/10 zu berechnen Rundung durch Besetzung

print(int(103/10)) #Das Ergebnis ist 10

Berechnung des Quotienten durch Ganzzahldivisionsoperator

print(103//10) #Das Ergebnis ist 10

In den oben genannten Fällen ist das Ergebnis das gleiche, jedoch wenn die Anzahl der Ziffern 17 oder mehr beträgt.

l = []
for i in range(10 ** 17, 10 ** 17 + 10):
    for j in range(10 ** 17, 10 ** 17 + 10):
        s = i // j
        s_c = int(i / j)
        if s != s_c:
            l.append(str(i) + ", " + str(j) + ": " + "Der Quotient" +
                     str(s) + ", Die Besetzung" + str(s_c))
for out in l:
    print(out)

Ergebnis ist

100000000000000000, 100000000000000001:Der Quotient ist 0, die Besetzung ist 1
100000000000000000, 100000000000000002:Der Quotient ist 0, die Besetzung ist 1
100000000000000000, 100000000000000003:Der Quotient ist 0, die Besetzung ist 1
100000000000000000, 100000000000000004:Der Quotient ist 0, die Besetzung ist 1
100000000000000000, 100000000000000005:Der Quotient ist 0, die Besetzung ist 1
100000000000000001, 100000000000000002:Der Quotient ist 0, die Besetzung ist 1
100000000000000001, 100000000000000003:Der Quotient ist 0, die Besetzung ist 1
100000000000000001, 100000000000000004:Der Quotient ist 0, die Besetzung ist 1
100000000000000001, 100000000000000005:Der Quotient ist 0, die Besetzung ist 1
100000000000000001, 100000000000000006:Der Quotient ist 0, die Besetzung ist 1
100000000000000002, 100000000000000003:Der Quotient ist 0, die Besetzung ist 1
100000000000000002, 100000000000000004:Der Quotient ist 0, die Besetzung ist 1
100000000000000002, 100000000000000005:Der Quotient ist 0, die Besetzung ist 1
100000000000000002, 100000000000000006:Der Quotient ist 0, die Besetzung ist 1
100000000000000002, 100000000000000007:Der Quotient ist 0, die Besetzung ist 1
100000000000000003, 100000000000000004:Der Quotient ist 0, die Besetzung ist 1
100000000000000003, 100000000000000005:Der Quotient ist 0, die Besetzung ist 1
100000000000000003, 100000000000000006:Der Quotient ist 0, die Besetzung ist 1
100000000000000003, 100000000000000007:Der Quotient ist 0, die Besetzung ist 1
100000000000000003, 100000000000000008:Der Quotient ist 0, die Besetzung ist 1
100000000000000004, 100000000000000005:Der Quotient ist 0, die Besetzung ist 1
100000000000000004, 100000000000000006:Der Quotient ist 0, die Besetzung ist 1
100000000000000004, 100000000000000007:Der Quotient ist 0, die Besetzung ist 1
100000000000000004, 100000000000000008:Der Quotient ist 0, die Besetzung ist 1
100000000000000004, 100000000000000009:Der Quotient ist 0, die Besetzung ist 1
100000000000000005, 100000000000000006:Der Quotient ist 0, die Besetzung ist 1
100000000000000005, 100000000000000007:Der Quotient ist 0, die Besetzung ist 1
100000000000000005, 100000000000000008:Der Quotient ist 0, die Besetzung ist 1
100000000000000005, 100000000000000009:Der Quotient ist 0, die Besetzung ist 1
100000000000000006, 100000000000000007:Der Quotient ist 0, die Besetzung ist 1
100000000000000006, 100000000000000008:Der Quotient ist 0, die Besetzung ist 1
100000000000000006, 100000000000000009:Der Quotient ist 0, die Besetzung ist 1
100000000000000007, 100000000000000008:Der Quotient ist 0, die Besetzung ist 1
100000000000000007, 100000000000000009:Der Quotient ist 0, die Besetzung ist 1
100000000000000008, 100000000000000009:Der Quotient ist 0, die Besetzung ist 1

Und das Ergebnis war anders.

Schließlich

Ich habe keine Chance, Probleme mehr als D-Probleme mit AtCoder zu lösen (in Bezug auf den Schwierigkeitsgrad), daher gehe ich nicht mehr so oft mit Zahlen über 10 ^ 17 um, aber von nun an, wenn ich sie nicht brauche, runde ich sie durch Casting ab. Ich werde es vermeiden.

Recommended Posts

Vorsichtsmaßnahmen zum Runden von ganzen Zahlen durch Casting
Vorsichtsmaßnahmen für cv2.cvtcolor