数字是 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 位。