2017-12-19 3 views
-1

JavaのInteger.MAX_VALUE?に対応するRubyとは何ですか?うまくいけばネイティブです。Rubyの最大整数サイズの値を取得

ランナーアップ:同等のものがない場合は、Timeオブジェクトにこれを設定する必要があります。したがって、整数2116-02-20の最大日付をハードコーディングするのではなく、これに対応するシステム定数がありますか?任意のより多くの整数の、彼らは自動的に「BIGNUM」の表現への移行は最大数はありません

+0

あなたはこれをどうしますか? –

答えて

2

は:

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

本当にメモリ以外の制限はありません:時間については

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

、それは同様に無制限ですあなたが本当に欲しいのならば、今、あなたは宇宙の熱死の後によく時間を表現することができます:

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

これは通常、+/- 21億の範囲に限定されていましたが、2038 problemの対象ですが、Ruby〜1.9以降はそうではありませんでした。私は2116の要因がWindows以外の点ではどこにあるのか分からない。

「ネイティブ」整数で表現できる最大/最小値を知りたい場合は、プラットフォームに依存します。 32ビットと64ビットのバイナリには異なる制限があります。

+0

@StefanPochmannああ、Windowsと同じシステムを使用しているのは偶然です。 – tadman

+0

ありがとう!これを答えておく前に、以下の2つの質問をクリアすることができますか?BigNumの使用を最小限に抑え、私の時間をintに保ちたい場合は、2116,02,20の前にそれらを保持する必要がありますか?質問1. 2116年2月20日の昼間の時間帯(2月19日11時59分59秒)が含まれているかどうかは不明です。質問2また、時間がintまたはBigNumを使用しているかどうかを知ることはできますか? .classはTimeを返し、.to_iは上記の制限を超える時間に作用するように見えます。 – user8897013

+2

'Integer'は' Fixnum'か 'Bignum'のどちらかでした。 Ruby 2.4以来、ちょうど「整数」です。 – steenslag

関連する問題