PHP-无符号整数(64位)的奇怪行为

时间:2019-03-22 10:50:25

标签: php

我在PHP上看到无符号整数变量的奇怪行为。以下代码:

$uint64 = 11689184649718456000;
$int64 = (int)$uint64;

var_dump($uint64);
var_dump($int64);
$str = number_format($uint64,0,"","");
var_dump($str);

输出为:

float(1.1689184649718E+19)
int(-6757559423991095296)
string(20) "11689184649718456320"

是什么在这里导致错误的输出?

最后:我想实现什么?

  1. 通过API接收无符号整数(uint64)
  2. 将其转换为无符号整数
  3. 将其存储在数据库中(因为PostgreSQL不支持无符号整数)
  4. 从数据库获取它
  5. 将其转换回无符号整数(uint64)

0 个答案:

没有答案