現在の位置: ホーム> 最新記事一覧> PHPのbindec()関数の戻り値は、整数型(int)またはフローティングポイントタイプ(float)ですか?

PHPのbindec()関数の戻り値は、整数型(int)またはフローティングポイントタイプ(float)ですか?

M66 2025-06-23

PHPでは、 bindec()関数を使用して、バイナリ文字列を対応する小数数に変換します。その定義は非常に単純です:

 int|float bindec(string $binary_string)

しかし、多くの開発者はそれを使用する際に疑問を抱きます: bindec()関数は整数型( int )またはフローティングポイントタイプ( float )を返しますか?この質問に対する答えは完全に直感的ではなく、以下は詳細な分析です。

bindec()の基本的な使用法

<?php
$binary = "1010";  // バイナリ番号,小数に等しい10
$decimal = bindec($binary);
echo $decimal;  // 出力:10
echo gettype($decimal);  // 出力:integer
?>

この例から、 bindec()は整数型を返します。

バイナリ番号が大きい場合、bindec()が浮動小数点数を返します

PHPの整数タイプ( INT )には、32ビットシステムと64ビットシステムで異なる範囲があります。

  • 32ビットシステムの最大整数は2,147,483,647 (約21億)です

  • 64ビットシステムの最大整数は9,223,372,036,854,775,807 (約9,000億)です。

バイナリ文字列の変換された値がシステム整数範囲を超えると、PHPは自動的に戻り値をフロートに変換します。これは、PHPの整数タイプにサイズの制限があるため、フローティングポイント数のタイプはより広い範囲の数値を表すことができるためです(ただし、精度が失われる可能性があります)。

例は次のとおりです。

 <?php
// 32ビットシステムはより大きくなっています2147483647的バイナリ番号
$binary = "11111111111111111111111111111111";  // 32個々1,等しい4294967295,超える32ビット整数範囲
$decimal = bindec($binary);
echo $decimal . "\n";  // 出力:4294967295
echo gettype($decimal) . "\n";  // 32位系统出力:double (PHP真ん中floatasとして表示されるタイプdouble)
?>

32ビットシステムでは、この値は最大整数範囲を超えるため、戻り点は浮動小数点数です。

特定の要約

  • バイナリ番号に対応する小数点が整数範囲内にある場合、 bindec()がintタイプを返します。

  • 値が整数範囲を超えると、 bindec()はフロートタイプを返します。

  • 64ビットシステムでは、非常に大きなバイナリ数のみがフロートを返し、32ビットシステムの変換範囲は小さくなります。

追加メモ: bindec()は、署名された整数をサポートしていません

bindec()は、バイナリ文字列を単純に署名していない数値に変換するだけで、バイナリ文字列には正と負の兆候の概念はありません。署名されたバイナリ番号を処理する必要がある場合は、変換ロジックを自分で処理する必要があります。

公式ドキュメントを参照してください

bindec()の詳細な手順については、 PHPマニュアルをご覧ください。