• ベストアンサー

小数の四捨五入

お世話になります。 タイトルのとおりなのですが、ただ0.2332232…みたいな小数ではなく、 DBから取得した小数で、 2.46674e+007 のような感じで後ろに+~という文字がついてしまっている小数の四捨五入の仕方です。 これをroundで四捨五入すると、0になってしまいます。 // $float_numが2.46674e+007だとして // 小数第3位まで取得 $float_num = round($float_num,3); 出力結果:24667400 2.467という値を取得したいです。 どうかご教授いただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • tecinfo
  • ベストアンサー率52% (32/61)
回答No.1

<?php $float = "2.46674e+007"; echo $float."<br>"; $float_num = round((float)$float,3); echo $float_num."<br>"; $float_num2 = split("e", $float); $float_num = round((float)$float_num2[0],3); echo $float_num; ?> 単純に(float)でキャストしただけでは、小数点が消えてしまうみたいなので、eの前だけ取り出して四捨五入してはどうでしょうか?

myaa_myu
質問者

お礼

ありがとうございます! あと、、、申し訳ありません、私の勘違いでした。 てっきりDBに格納された値は2.46674……と続く少数だと思っておりましたので、四捨五入の仕方を質問させていただいたのですが、丸め誤差(?)によるもので2.46674e+007という数字は少数ではなかったようです。。。 ですが、この方法は今後使えそうですね。是非活用させてください。 ありがとうございました!!