Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: сложение дробных чисел
Форумы портала PHP.SU » » Вопросы новичков » сложение дробных чисел

Страниц (1): [1]
 

1. moroz - 09 Декабря, 2011 - 09:07:20 - перейти к сообщению
Мне надо сложить(накапливать в цикле) числа с 3 знаками после запятой после запятой.
Вот так неверно (только целые складываются):

Тот же вопрос,но еще мне надо накапливать числа с 1 знаком после запятой.
Спасибо
2. DlTA - 09 Декабря, 2011 - 09:16:59 - перейти к сообщению
PHP хренова обрабатывает дробные числа,
если у вас огранчиенная точность (2 знака после ,)
то проще работать увеличив число к целому

2.86 => 286 накапливать сколько надо
а потом вернуть к нужной системе
286 => 2.86
3. snikers987 - 09 Декабря, 2011 - 09:28:13 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $k = 10;
  3. $arr = array(1.656, 1.653,8.457);
  4. for($i=0; $i<3; $i++){
  5. $tmp[] = $k + $arr[$i];
  6. }
  7.  
  8. var_dump($tmp);
  9. /*array(3) { [0]=> float(11.656) [1]=> float(11.653) [2]=> float(18.457) }*/
  10.  
  11. ?>

Не?
4. moroz - 09 Декабря, 2011 - 09:41:47 - перейти к сообщению
В приведенном примере идет накапливание дробных данных.Я дополню так:У меня в таблице (MySQL) данные вводятся в виде дробных чисел.В одном столбце-данные с 3 знаками после запятой,а в другом столбце-с 1 знаком после запятой.
Не точка,а ЗАПЯТАЯ.
Вопрос:как мне сложить эти данные?
Я изменю для примера данные:
PHP:
скопировать код в буфер обмена
  1.  
  2. $a=45,456;
  3. $b=12,178;
  4. echo "$a+$b";

В этом случае результат-только целые числа.Дробные отсутствуют.
5. Мелкий - 09 Декабря, 2011 - 09:47:49 - перейти к сообщению
moroz пишет:
Не точка,а ЗАПЯТАЯ.

А должна быть не запятая, а точка.
Заменяете запятую на точку и явным или неявным приведением к float будут работать математические выражения.
6. Dezmont - 09 Декабря, 2011 - 10:00:35 - перейти к сообщению
Можете вот так сделать:
PHP:
скопировать код в буфер обмена
  1. $a='11,111';
  2. $b='22,222';
  3. $a1=strtr($a,',','.');
  4. $b1=strtr($b,',','.');
  5. echo (float)$a1+(float)$b1;
7. snikers987 - 09 Декабря, 2011 - 10:00:44 - перейти к сообщению
moroz в том что у вас не правильно организованы данные, php не виноват.
8. moroz - 09 Декабря, 2011 - 10:46:19 - перейти к сообщению
спасибо.проблема решена.

 

Powered by ExBB FM 1.0 RC1