タグ

2024年2月12日のブックマーク (1件)

  • PHPの浮動小数点(float)の誤差とメモリに格納される仕組み | QUARTETCOM TECH BLOG

    PHPでは、変数に 0.1 を代入すると float 型と判定されます。 sprintf() で表示したところ小数部は53桁あり、それ以降を切り捨てる内容の警告が表示されました。 float 型の 0.1 は、なぜこのような値に変換されるのでしょうか? 浮動小数点がメモリに格納される仕組みを解説しながら理由を探ります。 10進数と2進数の表記(整数) 数値はメモリ上に2進数で格納されます。 2進表記の整数は 右端(一の位) から、2の0乗、2の1乗、2の2乗、2の3乗…を表します。2進数なので、格納される値は「0」または「1」の二通りです。「0」または「1」が格納される領域を「ビット」と呼びます。 10進数の 10 は2進数では 1010 です。「1」が格納されたビット(2の1乗と、2の3乗)の合計(2 + 8)が10進表記になります。 10進数と2進数の表記(小数) 2進表記の小数は 左

    PHPの浮動小数点(float)の誤差とメモリに格納される仕組み | QUARTETCOM TECH BLOG
    okinaka
    okinaka 2024/02/12