- - PR -
西暦2038年問題
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-04 02:53
対策ってどうやってるんでしょう。まあ、Solarisが動いてるのはほとんど64ビットマシンでしょうから問題はないのでしょうが。 32ビットマシンだと、C言語の標準関数いじるか、独自のライブラリを利用するとかしないかぎり、対策出来ないと思うのですが。 | ||||||||
|
投稿日時: 2004-02-04 06:45
time_t型は、型そのものが実装に依存するものとして定められているので 問題が起こらないように実装すればすむ話です。 # いや、その「実装」が問題なんだけど | ||||||||
|
投稿日時: 2004-02-04 08:35
単純には、unsigned longに書き替えてカーネルを再構築してやれば、先送りできる・・・のかな? | ||||||||
|
投稿日時: 2004-02-04 10:02
ども、ほむらです。
-------- なか-chan氏へ
たしか、2000年問題の発端がこれらしいですね。 そんなに長く使われるとは誰も思わなかった。と MS−DOSの元になったOSから考えたらかなり長い歴史ですからね〜。 #32ビットマシンでの有効な対策 #リプレース(笑 たしか、日付の計算方法を変えるという動きが一時期あったらしいのですけど あれは気のせいだったのかな? それで2038年問題はなくなるとか。。 | ||||||||
|
投稿日時: 2004-02-04 12:45
実は、1999年くらいにPerlでCGIをバカスカ書いていたんですが、思いっきり2000年問題に 引っかかるようなコードを書いてました 結局、「そんなに長く使われるとは誰も思わなかった」と言うと聞こえは良いですが、 「そんなところ気にしてなかった」もしくは「2000年になると問題が起こるなんて微塵も 考えてなかった」というところが本音かもしれません # 件の2000年問題に引っかかるコードは、もちろん全部直しました | ||||||||
|
投稿日時: 2004-02-09 10:54
B.G.氏ですか?「32KBもあればじゅうぶんだろう」 未だにCOBOLが使われているのも、その他の言語では桁数の問題があるからなのでしょうね。「これだけ有効桁数があれば十分だろう」。.NETのDecimal型で14桁。アメリカの国家予算は15桁(100兆)必要で無いかい? | ||||||||
|
投稿日時: 2004-02-09 13:09
むかし、Cを習いたての頃に「組み込み型の有効数字を超えて計算する方法」として、 int型のメンバを二つ持つ構造体を定義し、それを使って多桁計算を行う四則演算を 定義したりしていました。アルゴリズムの本とか読むと普通に出てますよね。 もはや、MyBigIntegerとかを定義するしかないかと。 # ワードサイズが64bitだと、intは4バイト、longは8バイト、となるのだろうか、、、 | ||||||||
|
投稿日時: 2004-02-09 13:21
.NET の decimal 型(Decimal クラス)はヘルプによると 128ビットで有効桁数が 28〜29桁あるようですが? テストしてみたところ10桁×10桁の計算(結果は20桁)は正しく計算されました。 |