Добрый день! У меня есть число 0,618033988749894848204586834365638117720309179805762862135448622705260 Вот такое большое и exel с ним не справляется и как я понял стандартные функции php тоже. В PHP не силен поэтому прошу вашей помощи.
@zerosoul, вот одно из описаний алгоритма: Перевод чисел в шестнадцатеричную систему счисления (смотри первый пример). --- Добавлено --- Для php, кстати, есть ещё разные математические расширения.
php скрипт перевода целой и дробной части числа из десятичной в шестнадцатиричную систему счисления по алгоритму предложенному пользователем Sail PHP: $c = "0.618033988749894848204586834365638117720309179805762862135448622705260"; $cm=explode(".",$c); $cc=$cm[0]; $cd=$cm[1]; $mz=array(); while (1) { $d = floor($cc/16); $o = $cc % 16; $mz[] = $o; if ($o==0) break; } // функция вывода букв для 16-ричного числа function to16($e) { if ($e<10) return $e; switch ($e) { case 10: $m = 'A'; break; case 11: $m = 'B'; break; case 12: $m = 'C'; break; case 13: $m = 'D'; break; case 14: $m = 'E'; break; case 15: $m = 'F'; break; } if (isset($m)) return $m; //var_dump($e); } while (count($mz)) echo to16(array_pop($mz)); echo "."; $mz=array(0=>0); $mzd = strlen($cd); for ($i=0;$i<$mzd;$i++) { $mz[$i+1] = intval(substr($cd,$i,1)); } //var_dump($mz); // поэлементное умножение на 16 while ($mzd>0) { // перебор всех элементов с целью умножения на 16 for ($i=0;$i<$mzd;$i++) { $mz[$i] = $mz[$i]*16; } // перебор всех элементов с целью переброса больших разрядов вверх for ($i=$mzd;$i>0;$i--) { if ($mz[$i]>10) { $c = floor($mz[$i]/10); $mz[$i-1] += $c; $mz[$i] = $mz[$i]%10; } } echo to16($mz[0]); $mz[0] = 0; $mzd--; }