PHP:为什么乘以“1E3”returns double 而不是 int?
PHP: Why multiplying by "1E3" returns double and not int?
我有以下代码:
$waitTimeInMs = random_int(500, 1000);
// 1E3 = 10 to the power of 3 = 1000
echo gettype($waitTimeInMs) .'|'.gettype($waitTimeInMs * 1E3) . '|' . gettype($waitTimeInMs * 1000) .'|' . $waitTimeInMs * 1E3;
这个returnsinteger|double|integer|759000
.
所以,实际上:
random_int()
returns 一个 int
;
- 乘以
1E3
returns一个double
;
- 乘以
1000
returns 一个 int
;
那么,如果 1000 = 1E3
为什么乘以 1E3
returns 而不是 int
?
指数数存储为双精度数..因为php不要更改正指数或负指数的数据类型
https://www.php.net/manual/en/language.types.float.php
的数据类型相同
$c = 7E-10;
或
$c = 7E+10;
但第一个通常是浮点数
你的假设是错误的:
// 1E3 = 10 to the power of 3 = 1000
1E3
是 +1.000E3
的缩写形式。根据科学计算机计数法的定义,它是一个浮点数:
// 1.23E4 => 1.23 * 10^4
// computer => scientific notation of a real number
顺便说一句:0.123e5 === 1.23e4 === 12.3e3 === 123e2 === 12300e0 === 12300.0
我有以下代码:
$waitTimeInMs = random_int(500, 1000);
// 1E3 = 10 to the power of 3 = 1000
echo gettype($waitTimeInMs) .'|'.gettype($waitTimeInMs * 1E3) . '|' . gettype($waitTimeInMs * 1000) .'|' . $waitTimeInMs * 1E3;
这个returnsinteger|double|integer|759000
.
所以,实际上:
random_int()
returns 一个int
;- 乘以
1E3
returns一个double
; - 乘以
1000
returns 一个int
;
那么,如果 1000 = 1E3
为什么乘以 1E3
returns 而不是 int
?
指数数存储为双精度数..因为php不要更改正指数或负指数的数据类型
https://www.php.net/manual/en/language.types.float.php
的数据类型相同
$c = 7E-10;
或
$c = 7E+10;
但第一个通常是浮点数
你的假设是错误的:
// 1E3 = 10 to the power of 3 = 1000
1E3
是 +1.000E3
的缩写形式。根据科学计算机计数法的定义,它是一个浮点数:
// 1.23E4 => 1.23 * 10^4
// computer => scientific notation of a real number
顺便说一句:0.123e5 === 1.23e4 === 12.3e3 === 123e2 === 12300e0 === 12300.0