提问人:Chinmay Chandak 提问时间:5/18/2017 最后编辑:Chinmay Chandak 更新时间:5/18/2017 访问量:77
PHP在大数字下表现得很滑稽
php acting funny with large numbers
问:
在我的一次大学竞赛中,问题指出将文件中的输入作为数字,然后简单地将其一半添加到自身中。
这些数字是 18 位长整数。我的大部分 php 输出都与实际答案不同(大部分差异是 2 的幂)。
注意:我还将浮点精度设置为 30 位,以便 php 不会将其打印为 1.3434...E+18,而是所有 18 位数字。
这是我的比赛代码。
<?php
$file = fopen("100.in","r");
$inp = [];
fgets($file);
while(!feof($file))
$inp[] = (double)fgets($file);
fclose($file);
$i = 0;
while(isset($inp[$i])) {
$half = $inp[$i]/2;
$sum = $inp[$i] + $half;
echo "$sum <br>";
$i++;
}
?>
我已经用文件中的值检查了输入数组值,并且在将值存储为浮点数或存储为浮点数时没有错误。
此外,在我用 python 计算答案(并将它们存储在文件中)并尝试将实际答案读取为数字后,php 打印的数字与我之前计算的数字相同,而不是我从文件中读取的数字。
所以有人可以告诉我我的代码有什么问题,或者是 php 的问题。以及我该如何纠正它。
您可以在此处查看调试文件
编辑:如果您看到调试文件,您可以清楚地看到问题与大数字无关,因为代码同时打印302309448458254344和1319763928349129856,大于第一个值的 4 倍。
答: 暂无答案
评论