数字是 13911392101301011,无论使用 sprintf 还是 number_format,我都会得到同样奇怪的结果。

sprintf('%017.0f', "13911392101301011"); // Result is 13911392101301012
number_format(13911392101301011, 0, '', ''); // Result is 13911392101301012

sprintf('%017.0f', "13911392101301013"); // Result is 13911392101301012
number_format(13911392101301013, 0, '', ''); // Result is 13911392101301012

最佳答案

由于您实际上将数字作为字符串,请使用 %s 修饰符:

sprintf('%s', "13911392101301011"); // 13911392101301011

请注意,PHP 在内部使用有符号整数。大小取决于您的系统。

32位系统:
2^(32-1) = 2147483648

64位系统:
2^(64-1) = 9223372036854775808
-1 因为为标志标志保留了 1 位。

10-04 21:28