2016-09-12 3 views
2

私は、PHPのドキュメントで、この例に出くわしました:PHPマニュアル:Is_Numericの例1の数値変換?

<?php 
$tests = array(
    "42", 
    1337, 
    0x539, 
    02471, 
    0b10100111001, 
    1337e0, 
    "not numeric", 
    array(), 
    9.1 
); 

foreach ($tests as $element) { 
    if (is_numeric($element)) { 
     echo "'{$element}' is numeric", PHP_EOL; 
    } else { 
     echo "'{$element}' is NOT numeric", PHP_EOL; 
    } 
} 
?> 

出力:

'42' is numeric 
'1337' is numeric 
'1337' is numeric 
'1337' is numeric 
'1337' is numeric 
'1337' is numeric 
'not numeric' is NOT numeric 
'Array' is NOT numeric 
'9.1' is numeric 

5例 '42' すべて '1337' と評価された後。なぜこれが '1337e0'(科学的記法)の場合に当てはまるのか理解できますが、なぜそれが残りの部分に当てはまるのか理解できません。

ドキュメントのコメントで誰かを見つけることができませんでしたが、ここで尋ねられたわけではありません。誰も '0x539'、 '02471'、 '0b10100111001' '1337'

答えて

2

すべての数値を出力すると、通常の表現に変換されます。 10進数のシステムで非科学的な表記法です(例:1e10 - 科学的浮動小数点)。

六角:

16進数は0xで始まり、0-9a-fのいずれかが続いています。

0x539 = 9*16^0 + 3*16^1 + 5*16^2 = 1337 

オクタル・:

8進数は0で始まり、整数のみ0-7が含まれています。バイナリ

02471 = 1*8^0 + 7*8^1 + 4*8^2 + 2*8^3 = 1337 

バイナリ番号が0b開始と0 sおよび/または1秒が含まれています。

0b10100111001 = 1*2^0 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^8 + 1*2^10 = 1337 
関連する問題