2024年5月26日のブックマーク (2件)

  • 面接官「0.1 + 0.2 == 0.3 が成立しない理由を説明せよ」 - Qiita

    なぜか これは、計算機が浮動小数点数を2進数で表現する際に、特定の小数は正確に表現できず、誤差が発生するためです。10進数の0.1や0.2は、2進数では無限に続く循環小数となるため、これらの数値を正確に表現することができません。その結果、0.1 + 0.2 は 0.3 と等しくならないことがあります。 小数点以下の数値→2進数へ変換する方法 CSを修めていればご存知方と思いますが、復習します。 小数点以下の数値を2倍する 結果の整数部分を取り出し、それを2進数の桁として記録する 小数部分だけを次のステップに持ち越す 小数部分が0になるか、所定の精度に達するまで1〜3を繰り返す 0.1 × 2 = 0.2 整数部分: 0 小数部分: 0.2 0.2 × 2 = 0.4 整数部分: 0 小数部分: 0.4 0.4 × 2 = 0.8 整数部分: 0 小数部分: 0.8 0.8 × 2 = 1.

    面接官「0.1 + 0.2 == 0.3 が成立しない理由を説明せよ」 - Qiita
    dickbruna
    dickbruna 2024/05/26
    MSXのBASICは浮動小数点の仮数部がBCDだったよね
  • ゲーム内の円周率が「3.14159……」ではない場合どうなるのか?

    円周率は無理数であり、その値が「3.14159……」となることはよく知られています。こうした円周率はグラフィカル・プログラミングやビジュアル・レンダリングの一環としてゲーム内でも用いられることがありますが、あの伝説的なFPSゲーム「Doom」に用いられた円周率の値は間違っているそうです。こうした「誤った円周率」がゲームに用いられた場合どうなるのか、ソフトウェアエンジニアのルーク・ゴツリング氏が解説しました。 Non-Euclidean Doom: what happens to a game when pi is not 3.14159… - media.ccc.de https://media.ccc.de/v/mch2022-236-non-euclidean-doom-what-happens-to-a-game-when-pi-is-not-3-14159- 円周率とは、円の直径に

    ゲーム内の円周率が「3.14159……」ではない場合どうなるのか?
    dickbruna
    dickbruna 2024/05/26
    3.1415926535897まで覚えるのお勧め。double(float64)で表現できる限界精度がこの桁なので。