Всем привет... Помогите чайнику - своего алкоголика я замучил до сердечного приступа, три дня ему лежать, а глюк всплыл вчера вечером... Я тупой, не догоняю последнюю милю. Итак, есть сайт с ценами. Цены задаются и расчитываются с центами (Х.ХХ), но потом считаются в итог до первого знака (Х.Х) а выводятся на экран с нулем в хвосту. Так вот, в одном из выводов, при дописывании нуля, если округленное число получилось целым, происходит умножение на 10. То есть не происходит Х.0 + 0 = Х.00, а выходит Х+0=Х0... Вчера клиент был в шоке, вместо 41 евро счет на 410... Я допер в чем дело (выше изложил, изначально на что только не грешил), и нашел место - точнее два - где конкретно это происходит. Вот эти места: $priceSumm = round(($priceSumm * (1 - $_SESSION['kaavainSkidkaBank'] / 100)), $_SESSION['round'])."0"; // Применяем скидку за оплату через банк $priceSummBank = round(($priceSummNoBank - $priceSumm), $_SESSION['round'])."0"; ВОПРОС: есть ли какой-нибудь способ выводить Х.Х0 при округлении до 1 знака без дописывания нуля? Я пока не копал дальше, хотя в других местах подобные операции не приводят к умножению... Нашел в коде некую функцию detectFloat: <span style='font-weight: bold; color: red; font-style: italic;'>- ".$_SESSION['valuteSimbol'].detectFloat($priceSummBank, false)."</span> но нигде не могу описания ее найти... Мож это то что меня спасет???
так смотрите по порядку PHP: echo $SkidkaBank = (1 - $_SESSION['kaavainSkidkaBank'] / 100); echo $priceS = $priceSumm * ($SkidkaBank); $priceSumm = round($priceS, $_SESSION['round'])."0"; А что лежит в $_SESSION['round'] ? Нельзя здесь просто 2 поставить? И зачем 0 дописываете? Посмотрите в сторону floor, может поможет.
Я тупой! Я не знаю что есть флур! Касательно раунда - один вижок у меня обслуживает разные сайты. Русский, где округление до целого (рубли) и буржуйский, там округление до центов. 2 поставить нельзя, так как округление до единиц центов это смешно, в Финляндии нет монет по центу. Поэтому округление до гривенника. Дописываем ноль чтобы красиво отображалось - не Е 15 , Е 22.3 а Е 15.00 , Е 22.30...
УРА! Я хацкер! Я сам победил глюк! Оказыцца дедектфлоу - это функция самописная, полез в нее - а там тоже нолики дописываются. Один раз лишний. Убил - вуаля! Тока жаль теперь никто по ошибке вместо 156 евро 1 560 не заплатит :-(