2017-12-19 7 views
-1

Was ist das Ruby-Äquivalent für Javas Integer.MAX_VALUE?? Hoffentlich einheimisch.Ruby erhält maximalen Integer-Wert

Runner Up: Wenn keine Entsprechung, muss ich dies für ein Time-Objekt festlegen, also gibt es eine Systemkonstante, die für das funktionieren würde, anstatt das maximale Datum für eine ganze Zahl 2116-02-20 fest zu codieren?

+0

Wozu willst du das? –

Antwort

2

Es gibt keine maximale mehr für ganze Zahlen, sie automatisch auf „bignum“ Darstellung verschieben:

1 << 64 
# => 18446744073709551616 
(1 << 64) + 1 
# => 18446744073709551617 

Es gibt wirklich keine Grenze außer Speicher:

1 << (1 << 16) 
# => 20035299304...(thousands of digits)...05719156736 

Was Zeit, es ist ähnlich unbegrenzt also kannst du jetzt mal nach dem Hitzetod des Universums mal ausdrücken, wenn du das wirklich willst:

Time.at(1<<128) 
# => 10783118943836478994022445751222-08-06 04:04:16 -0400 

Dies war früher auf den üblichen +/- 2,1 Milliarden Bereich beschränkt, vorbehaltlich der 2038 problem, aber das war seit Ruby ~ 1.9 nicht der Fall. Ich bin mir nicht sicher, wo 2116 außer aus einer Windows-Perspektive eingeht.

Wenn Sie die max/min wissen möchten, die in einer "nativen" Ganzzahl dargestellt werden kann, dann ist das plattformabhängig. 32-Bit- und 64-Bit-Binärdateien haben unterschiedliche Grenzwerte.

+0

@StefanPochmann Ah, es ist nur zufällig, dass es dasselbe System wie Windows verwendet. – tadman

+0

Danke! Bevor ich dies als beantwortet markieren, können Sie zwei Fragen nach unten klären: Also, wenn ich die Verwendung von BigNum minimieren und meine Zeiten in int halten wollte, muss ich sie vor 2116, 02, 20 korrigieren? Frage 1. Nicht sicher, ob dies die Tagesstunden am 20. Februar 2116 beinhaltet oder nicht (ist am 19. Februar um 11:59:59). Frage 2. Kann ich auch sagen, ob die Zeit einen Int oder BigNum verwendet? .class gibt Time zurück, und .to_i scheint bei Zeiten zu funktionieren, die größer sind als das obige Limit. – user8897013

+2

'Integer' war entweder ein' Fixnum' oder ein 'Bignum'; seit Ruby 2.4 ist es nur 'Integer'. – steenslag

Verwandte Themen