0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHP:Docker環境:bcmath関数で浮動小数点の計算を正確にする

Last updated at Posted at 2023-02-19

浮動小数点の計算は正確にならない。
よって、大前提として浮動小数点の計算は避けた方が良いが、必要な時はbcmath関数を利用するとよい。

ただし、bcmath関数を別途インストールしせねば使えない。
すでに仕込んであればDockerのDockerfileに記述がある。
mbstring zip bcmath

// 加算したい小数点を「文字列として」記述し、最後のパラメータで表示させた桁数を指定
$num = bcadd('0.1', '0.2', 1);
var_dump($num); // string(3) "0.3"
echo PHP_EOL;
var_dump((float) $num === 0.3); // bool(true)

一つ目の出力: 0.3と表示される。数値ではなく文字列にしているのに計算ができるのがbcmath関数の機能となる。ただし、文字列になっているため、結果を浮動小数点に戻したければ二つ目の出力にもあるように、float化せねばならない。

二つ目の出力: 今度は 足し算した $num と 0.3 という浮動小数点とを比較し、真偽値で返すもの。
float化しているので浮動小数点同士の比較がしっかりとできている。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?