by shigemk2

当面は技術的なことしか書かない

WebDBPress Vol.57 PHP転ばぬ先の杖 その2

浮動小数点数について。
C言語みたくint,double,floatではなく、intとfloatのみ

  • 誤差に注意
  • 丸めの関数に注意(境界値、マイナスの挙動)
  • 非有限値に注意(inf、NaN)

小数を含んだ情報を扱うときや、金額など誤差が許されない場合

  • 10 倍、100 倍、1,000 倍するなどして整数に 直して処理する

測定値・統計データなどでわずかな誤差は許容できる場合(温度など)

  • おそらく float 型で問題ない

整数の情報を扱う場合 ・整数の上限値を超えないかどうかに注意する

  • 64 ビット環境なら整数も 64 ビットになるのでまず安心
  • 32 ビット環境であればGMP 関数の利用を検討する

また、NaNとinfの違いについてだが、
NaNは大きいのか小さいのか分からない数(sqrt(-1)など)
infは、floatの許容を越えた数(2の1024乗など)