Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Округление не округляется...

Сообщения:  [1-10]    [11-20]  [21-22] 

 
 автор: Shorr Kan   (06.01.2006 в 01:56)   письмо автору
 
   для: Евгений Петров   (06.01.2006 в 01:40)
 

Ничего не понял, ладно - практика мне объяснит. К сожалению, сейчас ничего проверить не могу, но к утру - буду более эрудирован. Спасибо.

   
 
 автор: Евгений Петров   (06.01.2006 в 01:40)   письмо автору
 
   для: Shorr Kan   (06.01.2006 в 01:35)
 

И кстати если округлить 23.34997 то будет не 23.34 а 23.35 :))))

   
 
 автор: Евгений Петров   (06.01.2006 в 01:38)   письмо автору
 
   для: Shorr Kan   (06.01.2006 в 01:35)
 

23.35002-0.005 = 23.34502 округляем = 23.35

вы скрипт запустите и сами во всем убедитесь

   
 
 автор: Shorr Kan   (06.01.2006 в 01:35)   письмо автору
 
   для: Евгений Петров   (06.01.2006 в 01:32)
 

23.35002-0.005 = 23.34997 округляем = 23.34 ... а должно быть 23.35

   
 
 автор: Евгений Петров   (06.01.2006 в 01:32)   письмо автору
 
   для: Shorr Kan   (06.01.2006 в 01:26)
 

Количество нулей после запятой, это количество знаков которое надо обрезать. И он не округлит а именно обрежет. Например нам надо получить число 23.34:
минимальное число 23.3400000
максимальное число 23.3499999

теперь вычитаем:
из первого: 23.34-0.005 = 23.335 округляем = 23.34
из второго: 23.34999-0.005 = 23.34499 округляем = 23.34
таким образом числа как бы обрезаются

   
 
 автор: Shorr Kan   (06.01.2006 в 01:26)   письмо автору
 
   для: Евгений Петров   (06.01.2006 в 01:21)
 

вариант

<?
$val = 23.3456789;
echo round(($val-0.005),2);
?>

кажется, округлит, а не обрежет.
И почему -0.005 ?

   
 
 автор: Евгений Петров   (06.01.2006 в 01:21)   письмо автору
 
   для: Shorr Kan   (06.01.2006 в 01:18)
 

Мне кажется проще и быстрее мой последний вариант, там где 0.05 вычитается

   
 
 автор: cheops   (06.01.2006 в 01:20)   письмо автору
 
   для: Shorr Kan   (06.01.2006 в 01:18)
 

Зато строковыми функциями быстрее получится... хотя, конечно, не вооружённым взглядом это вряд ли можно заметить...

   
 
 автор: Shorr Kan   (06.01.2006 в 01:18)   письмо автору
 
   для: isset   (06.01.2006 в 00:38)
 

Я не думал, что когда-нибудь скажу такое.... но не кажется ли вам, что регулярным тут попроще?...

а вариант

<?
$val = 23.3456789;
echo round(($val-0.005),2);
?>

кажется, округлит, а не обрежет.

   
 
 автор: isset   (06.01.2006 в 00:38)   письмо автору
 
   для: Евгений Петров   (06.01.2006 в 00:31)
 

На всякий, чтобы не было проблем с разными локалями:

<?
  $val 
23.34546;
  
$to = (($to strpos($val,".") || ($to strpos($val,","))) == null)?strlen($val):$to;
  echo 
substr($val,0,$to+3);
?> 

   

Сообщения:  [1-10]    [11-20]  [21-22] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования