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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: +- 0.01
 
 автор: MIchail1982   (17.01.2008 в 16:57)   письмо автору
 
 

подскажите, почему выдаёт "BLOSHE"
<?php
$a 
1.11123;
$a round($a,2);
$b 1.12;

echo 
"$a<br>";
echo 
"|$a - $b| = ",abs($a-$b),"<br>";
if(
abs($a-$b)>0.01)
    echo 
"BLOSHE";
else echo 
"RAVNO";
?>

   
 
 автор: Loki   (17.01.2008 в 17:29)   письмо автору
 
   для: MIchail1982   (17.01.2008 в 16:57)
 

Как-то раз была такая тема. Trianon там все достаточно подробно расписывал. Связано это с двоичной системой исчисления и числами с плавающей точкой.

   
 
 автор: sim5   (17.01.2008 в 17:45)   письмо автору
 
   для: MIchail1982   (17.01.2008 в 16:57)
 

if ($a-$b > 0.01) и будет вам равно.

   
 
 автор: MIchail1982   (17.01.2008 в 17:59)   письмо автору
 
   для: sim5   (17.01.2008 в 17:45)
 

мне нужно отследить значения на +-1 копейка

   
 
 автор: sim5   (17.01.2008 в 18:42)   письмо автору
 
   для: MIchail1982   (17.01.2008 в 17:59)
 

bccomp(abs($a-$b), 0.01) тогда вам не ошибется.

   
 
 автор: kasmanaft   (17.01.2008 в 18:04)   письмо автору
 
   для: MIchail1982   (17.01.2008 в 16:57)
 

Посмотрите
echo "|$a - $b| = ", printf ("%0.15f", abs($a-$b));

   
 
 автор: MIchail1982   (17.01.2008 в 18:08)   письмо автору
 
   для: kasmanaft   (17.01.2008 в 18:04)
 

2 kasmanaft
интереснинько

   
 
 автор: kasmanaft   (17.01.2008 в 18:21)   письмо автору
 
   для: MIchail1982   (17.01.2008 в 18:08)
 

Приведите числа к int (копейкам), потом сравнивайте:
<?php 
$a 
1.11123;
$b 1.12;

$a = (int) round($a*100);
$b = (int) round($b*100);

if(
abs($a-$b)>1)
    echo 
"BLOSHE";
else echo 
"RAVNO";
?>

   
 
 автор: Trianon   (18.01.2008 в 00:19)   письмо автору
 
   для: kasmanaft   (17.01.2008 в 18:21)
 

Дельный совет.

   
Rambler's Top100
вверх

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