Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数组分配给变量时,值是否不同?_Php - Fatal编程技术网

Php 从数组分配给变量时,值是否不同?

Php 从数组分配给变量时,值是否不同?,php,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); pri

我有一个大整数值数组。使用
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
编辑:我在MacOSX10.11.3上,使用PHP7.0.4

我真的不知道这里发生了什么,但任何帮助都会很好。谢谢

代码 若要解决问题,必须使用double
%.0d
而不是
%.0f

$value = '-8845908906223371573';
print_r($value);
echo "\n";
printf("v0: %.0d",$value);
echo  "\n";
输出 代码 若要解决问题,必须使用double
%.0d
而不是
%.0f

$value = '-8845908906223371573';
print_r($value);
echo "\n";
printf("v0: %.0d",$value);
echo  "\n";
输出
您的数字非常大,您是否尝试过浮点数或整数?问题肯定出在您的输出样式中。在所有输出中,只有最后4位数字不同,因此我怀疑:%.0F。此格式正在更改您的数字,因此请使用echo进行尝试,看看会发生什么。是的,我尝试了BC Math,但同样,很难处理这些值,因为一旦我将它们分配给数组中的变量,它们就会发生变化。你是不是建议我从一开始就将数字存储在数组中的GMP/BC数学类类型中?你知道浮点数会带来麻烦吗?“因此,千万不要相信最后一位的浮点数结果”(请参阅红色大警告:)。虽然您使用的整数在小数点后没有数字,但我高度怀疑它们将被舍入到最接近的浮点表达式。另请参见此示例:您的数字非常大,您是否尝试过浮点数或整数?问题肯定出在您的输出样式中。在所有输出中,只有最后4位数字不同,因此我怀疑:%.0F。此格式正在更改您的数字,因此请使用echo进行尝试,看看会发生什么。是的,我尝试了BC Math,但同样,很难处理这些值,因为一旦我将它们分配给数组中的变量,它们就会发生变化。你是不是建议我从一开始就将数字存储在数组中的GMP/BC数学类类型中?你知道浮点数会带来麻烦吗?“因此,千万不要相信最后一位的浮点数结果”(请参阅红色大警告:)。虽然您使用的整数在小数点后没有数字,但我高度怀疑它们将被舍入到最接近的浮点表达式。另请参见此示例:谢谢!这解决了打印问题…太奇怪了。现在我在数字加法上遇到了麻烦,但如果我不明白的话,这是另一个问题。我想我可能最终会使用GMP或BC数学来解决这个问题。@teknogeek是的,另外我总是使用BC数学谢谢!这解决了打印问题…太奇怪了。现在我在数字加法上遇到了麻烦,但如果我不明白的话,这是另一个问题。我想我可能最终会使用GMP或BC数学来解决这个问题。@teknogeek是的,除此之外,我总是使用BC数学