Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2010, 21:27   #1
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию Вопрос по сложению чисел

Привет, подскажите насчет небольшой проблемки.
Немного подзабыл, как в PHP это делается.
Есть 2 числа такого вида:
$a=45899091;
$b=45900909;
Нужно получить среднее арифметическое
$c=(0.5*($a+$b));

Если так сделать, то пропадают последние знаки, получается 4,59E+7.
Нужно же получить с максимальной точностью результат.
Числа исходные могут быть и не целыми, иметь дробную часть и могут быть больше, чем макс. разрешенное целое.
И еще вопрос:
Имеется число вида 1.2345E+7. Как получить из него нужное число, которое будет, если домножить на 10^N (10^7 для данного случая)?

Спасибо
motorway вне форума Ответить с цитированием
Старый 12.05.2010, 21:57   #2
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Попробуйте следующее, может поможет:

PHP код:
$a=45899091;
$b=45900909;
$c=float(0.5*($a+$b));
echo 
$c
vasek123 вне форума Ответить с цитированием
Старый 12.05.2010, 22:25   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Уже пробовал подобным образом, рез-т такой же.
Код:
$c=(float) (0.5*($a+$b));
Функции float нет, а как у меня - приведение к типу float
motorway вне форума Ответить с цитированием
Старый 12.05.2010, 22:35   #4
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Хм... Может быть, форматирование поможет(например, printf)?
vasek123 вне форума Ответить с цитированием
Старый 12.05.2010, 23:31   #5
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Как конкретно его тут применить?
motorway вне форума Ответить с цитированием
Старый 12.05.2010, 23:46   #6
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Цитата:
Сообщение от motorway Посмотреть сообщение
Как конкретно его тут применить?
Просто, думаю, если преобразовать сначала полученный результат в тип String(т.е не применять Float) а уж потом и применить форматирование.

p.s. Тем более не так сложно узнать длинну строки.
vasek123 вне форума Ответить с цитированием
Старый 13.05.2010, 14:13   #7
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

варварство конечно, но работает
PHP код:
$a=45899091
$b=45900909
$c=($a+$b)*0.5
if(
strpos($c,'E')!==false)$c=(int)$c;
echo 
$c
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 13.05.2010, 15:55   #8
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

У меня могут быть и числа, большие разрешенных в типе int
motorway вне форума Ответить с цитированием
Старый 15.05.2010, 11:59   #9
bracomp
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 23
По умолчанию

вообще-то, нормально работает
$c=($a+$b)/2;
bracomp вне форума Ответить с цитированием
Старый 15.05.2010, 12:39   #10
bracomp
Пользователь
 
Регистрация: 25.10.2009
Сообщений: 23
По умолчанию

<?
$a=458990905656.234612;
$b=459009096655.12;
$c=($a+$b)/2;
echo $c;
echo "<br>a=". $a;
echo "<br>b=". $b;
echo "<br>c=". $c;
echo "<br>a*10000=";
printf("'%f'\n", $a*10000);
?>
результат
============
459000001155.68
a=458990905656.23
b=459009096655.12
c=459000001155.68
a*10000='4589909056562346.000000'
===============
к сожалению, это предел
bracomp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести несколько чисел (кол-во чисел запрашивать с экрана). Определить, сколько чисел, меньших заданного Lirika Помощь студентам 0 08.05.2010 21:39
Delphi:Определить имеется ли среди чисел a,b,c хотя бы одна пара взаимно противоположных чисел. Skvot Помощь студентам 6 27.04.2009 11:47
Округление чисел: вопрос rzrwolf Microsoft Office Excel 8 11.01.2009 21:06
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53