46

フロート値 (例: 1.0000124668092E+14) を PHP で整数に変換したいのですが、php.output でこれを行うための最良の方法は "100001246680920" である必要があります。

4

6 に答える 6

63

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

  • キャスト*:(int) $floatまたはintval($float)
  • 切り捨て: floor($float)(下) またはceil($float)(上)
  • 丸め: round($float)- 追加のモードPHP_ROUND_HALF_...があります。定数を参照してください

* : float 値を int で表現できない (大きすぎる、または小さすぎる) 可能性があります。あなたの場合。

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

ただし、これらの大きな数を処理するためにBCMathまたはGMP拡張機能を使用できます。(両方ともバインドされています。これらの拡張機能を有効にするだけで済みます)

于 2013-05-09T08:08:27.793 に答える
26

私はあなたに警告したいだけです:

>>> (int) (290.15 * 100);
=> 29014
>>> (int) round((290.15 * 100), 0);
=> 29015
于 2019-11-05T13:49:45.850 に答える
16

使用するround()

$float_val = 4.5;

echo round($float_val);

詳細については、精度と丸めモードのパラメーターを設定することもできます

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

$float_val = 1.0000124668092E+14;
printf('%.0f', $float_val / 1E+14); //Output Rounds Of To 1000012466809201
于 2013-05-09T07:28:30.560 に答える
1

またはメソッドを使用roundして、最も近い整数に丸めます。floorceilintval()

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

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

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

于 2013-05-09T07:29:38.140 に答える