web-dev-qa-db-ja.com

PHPでフロート値を整数に変換する方法は?

Phpでfloat値(eg:1.0000124668092E + 14)をIntegerに変換したいのですが、php.outputでこれに最適な方法は「100001246680920」です

23
sajith

変換するとはどういう意味ですか?

  • キャスト*:_(int) $float_またはintval($float)
  • 切り捨て:floor($float)(down)またはceil($float)(up)
  • 丸め:round($float)-追加の modes 、_PHP_ROUND_HALF_..._定数を参照

*:キャストには、float値をint(大きすぎる、または小さすぎる)、f.ex。あなたの場合。

_PHP_INT_MAX_ :PHPのこのビルドでサポートされている最大の整数。通常int(2147483647)。

ただし、 BCMath または [〜#〜] gmp [〜#〜] 拡張を使用して、これらの大きな数を処理できます。 (両方とも制限があり、これらの拡張機能を有効にするだけで済みます)

45
pozs

round()を使用します

$float_val = 4.5;

echo round($float_val);

詳細 の場合、精度と丸めモードのparamを設定することもできます

更新(更新された質問による):

$float_val = 1.0000124668092E+14;
printf('%.0f', $float_val / 1E+14); //Output Rounds Of To 1000012466809201
13
Mr. Alien

常にintval()があります-これがあなたが探していたものであるかどうかはわかりません...

例:-

$floatValue = 4.5;
echo intval($floatValue);    // Returns 4

値を整数に四捨五入しませんが、小数と末尾の数字を取り除き、小数の前の整数を返します。

これに関するいくつかのドキュメントを以下に示します。- http://php.net/manual/en/function.intval.php

4
JamLizzy101

制限されているintval()とともに、roundfloor、またはceilメソッドを使用して最も近い整数に丸めます。

http://php.net/manual/en/function.round.php

http://php.net/manual/en/function.ceil.php

http://php.net/manual/en/function.floor.php

1
fullybaked