Im Folgenden finden Sie das kleine Segment des Code von meinem Skript:große ganze Zahlen ändern ihren Wert nach der Operation Anwendung
Die zusätzliche Logik ist gemäß dem Skalenwert
x = "11400000206633458812"
scale = 2
x = x.to_f/10**scale.to_i
x = x == x.to_i ? x.to_i : x
puts x
beobachten jeden Datenwert verdeckte, dass die Wert ergibt sich "114000002066334592"
was unterscheidet sich von dem Anfangswert von x.
Meine Testpunkte sind zu diesem Zeitpunkt fehlgeschlagen.
x kann ein beliebiger Wert sein. Wenn ich x = 156 verwende, ist die Ausgabe korrekt, aber wenn die Länge der Ganzzahl 16 Ziffern übersteigt, tritt das Problem auf.
Die erwartete Ausgabe in obigen Fall ist 114000002066334588
Kann mir jemand helfen, warum der Wert verändert sich, und wie man es beheben?
@AndreyDeineko, x ist tatsächlich eine Zeichenfolge .. Wenn ich x.to_d verwenden, es gibt mir eine Fehlermeldung: nicht definierte Methode 'to_d‘ für "11400000206633458812": String (NoMethodError) –
_“ große Ganzzahlen ändern ihren Wert "_ -' x.to_f "gibt keine Ganzzahl zurück. – Stefan