Нужно неокруглять число

BAR23

Новичок
Нужно неокруглять число

День добрый. Нужна помощь, не могу разобраться.
У меня есть цена например(679 грн), расчитываю ПДВ 20%
PHP:
 $Price=679.48;
 $PDV=$Price*0.2;
 // 135.896
 $PDV=sprintf('%.2f',$PDV);
 echo $PDV; // выдаёт 135.90, а нужно 135.89
Есть ли фунция или директива которая не позволит переменной(числу) округлятся?
Я в поиске уже был. смотрел на Setlocale, и другие функции но пока не нашёл.
Спасиба за помощь.
 

BAR23

Новичок
Re: Нужно неокруглять число

Не то.
Ети функции округляют числа.
PHP:
echo floor(4.3);   // 4
echo floor(9.999); // 9
echo floor(-3.14); // -4

echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3

echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2);    // 5.05
echo round(5.055, 2);    // 5.06
Можно ето решить через строку. Просто обрезать 3 символ. Но ето не оптимально. можно ли ето сделать как то правильно?
 

Dovg

Продвинутый новичок
[offtop]
Обидно, что я уже не ssl
[/offtop]
BAR23
Учись читать и думать
По ссылке, которую я тебе дал, есть комментарий с ответом на _твой_ вопрос
Кроме этого есть еще арифметика, в которой есть деление и умножение
 

AmdY

Пью пиво
Команда форума
Dovg
главное не быть 404
BAR23
умножай и дели
 

BAR23

Новичок
AmdY делаю разницей
например (и имено тут возникает проблемка которую описал в теме http://phpclub.ru/talk/showthread.php?s=&threadid=108005)
66,85-66=0,85
а даёт 0,849999999999.
Может подскажете.
Я пробую через приведение к типу, может в етом дело.
 

AmdY

Пью пиво
Команда форума
floor(84,9999999*100)/100
ceil(84,9999999*100)/100
> 66,85-66=0,85
используй math функции, например bcsub, хотя варианты выше мне больше нравятся.
 

BAR23

Новичок
Вопрос в том, как ето может быть в простой операции 66,85-66=0,84999999999999999999
Ето и не очень прикольно. :)
 

dimagolov

Новичок
по-моему это стеб :(

или проявление низкого порога вхождения :( :(

две темы про вычисления с плавающей точкой.... такого давно не было :(
 

Dovg

Продвинутый новичок
Блин, полдня назад объяснили почему так происходит
кстати по ссылке, которую дал Sluggard это написано.

запиши 2/3 в десятичных дробях, может поймешь.



ЗЫ. Тебе ведь нужна точно до копеек?
может тогда считать в копейках, а при выводе пользователю делить на сто?
тогда у тебя будет
PHP:
echo (6685-6600)/100; //0.85
 
Сверху