Работа с большими числами, PHP

Рейтинг: 1Ответов: 3Опубликовано: 01.11.2014

Не удается перевести строку в число при чтении файла. Если делать var_dump($line), показывает:

string(51) "53503534226472524250874054075591789781264330331690
"

если перевожу в интеджер, то числа становятся:

int(9223372036854775807)

Как правильно сделать, чтобы строка "53503534226472524250874054075591789781264330331690" стала числом 53503534226472524250874054075591789781264330331690?

Код программы:

<?php
  $sum = 0;
  $file = fopen('file.txt', 'r');

  if ($file) {
    while (($line = fgets ($file)) !== false) {
      $sum += (int) $line;
    }

    fclose($file);
    echo $sum;
  }

Ответы

▲ 5Принят
<?php
  function problem () {
    $file = file('file.txt');
    $sum = '0';
    $i = 100;
    while ($i >= 0) $sum = bcadd($sum, trim($file[$i--]));
 }
▲ 1

В php тип integer имеет ограничения от –2 147 483 648 до 2 147 483 647. )

Да и мне как-то сложно в принципе представить, где вам понадобилось такое большое число.

▲ 1

Никак, по сути. Возможно, вам поможет Библиотека GMP.

Вот очень интересная статья на wiki.php.net: PHP RFC: Big Integer Support.