从数组到变量赋值时值是否不同?

时间:2016-03-09 13:11:34

标签: php

我有一个大整数值数组。使用print_r()打印时,值是正确的,但是当我将数组内部的值分配给变量并使用printf进行打印以获得精度时,值会有所不同。

$this->v0 = $this->myArray[0];
$this->v1 = $this->myArray[1];
$this->v2 = $this->myArray[2];
$this->v3 = $this->myArray[3];

print_r($this->myArray);
printf("v0: %.0F | v1: %.0F | v2: %.0F | v3: %.0F\n", $this->v0, $this->v1, $this->v2, $this->v3);

打印出来

Array
(
    [0] => -8845908906223371573
    [1] => -7688304550669780974
    [2] => -7337754985657963041
    [3] => -8842903914599747060
)
v0: -8845908906223371264 | v1: -7688304550669780992 | v2: -7337754985657963520 | v3: -8842903914599746560

编辑:我使用的是Mac OS X 10.11.3并使用PHP 7.0.4

真的不确定这里发生了什么,但任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:3)

代码

要解决您的问题,您必须使用双%.0d代替%.0f

$value = '-8845908906223371573';
print_r($value);
echo "\n";
printf("v0: %.0d",$value);
echo  "\n";

输出

-8845908906223371573
v0: -8845908906223371573