За последние 24 часа нас посетили 37907 программистов и 1807 роботов. Сейчас ищут 863 программиста ...

Вывод числа в формате Х.Х0, Как выводить цену с двумя знака

Тема в разделе "PHP для новичков", создана пользователем KAAVAIN.FI, 2 мар 2011.

  1. KAAVAIN.FI

    KAAVAIN.FI Активный пользователь

    С нами с:
    2 мар 2011
    Сообщения:
    3
    Симпатии:
    0
    Всем привет...

    Помогите чайнику - своего алкоголика я замучил до сердечного приступа, три дня ему лежать, а глюк всплыл вчера вечером... Я тупой, не догоняю последнюю милю.

    Итак, есть сайт с ценами. Цены задаются и расчитываются с центами (Х.ХХ), но потом считаются в итог до первого знака (Х.Х) а выводятся на экран с нулем в хвосту.

    Так вот, в одном из выводов, при дописывании нуля, если округленное число получилось целым, происходит умножение на 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>

    но нигде не могу описания ее найти... Мож это то что меня спасет???
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
  3. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
    так смотрите по порядку

    PHP:
    1. echo $SkidkaBank = (1 - $_SESSION['kaavainSkidkaBank'] / 100);
    2. echo $priceS = $priceSumm * ($SkidkaBank);
    3.    
    4. $priceSumm = round($priceS, $_SESSION['round'])."0";
    А что лежит в $_SESSION['round'] ? Нельзя здесь просто 2 поставить?

    И зачем 0 дописываете?

    Посмотрите в сторону floor, может поможет.
     
  4. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
  5. KAAVAIN.FI

    KAAVAIN.FI Активный пользователь

    С нами с:
    2 мар 2011
    Сообщения:
    3
    Симпатии:
    0
    Я тупой! Я не знаю что есть флур!

    Касательно раунда - один вижок у меня обслуживает разные сайты. Русский, где округление до целого (рубли) и буржуйский, там округление до центов.

    2 поставить нельзя, так как округление до единиц центов это смешно, в Финляндии нет монет по центу. Поэтому округление до гривенника.

    Дописываем ноль чтобы красиво отображалось - не Е 15 , Е 22.3 а Е 15.00 , Е 22.30...
     
  6. KAAVAIN.FI

    KAAVAIN.FI Активный пользователь

    С нами с:
    2 мар 2011
    Сообщения:
    3
    Симпатии:
    0
    УРА! Я хацкер! Я сам победил глюк!
    Оказыцца дедектфлоу - это функция самописная, полез в нее - а там тоже нолики дописываются. Один раз лишний. Убил - вуаля!
    Тока жаль теперь никто по ошибке вместо 156 евро 1 560 не заплатит :-(