За последние 24 часа нас посетили 18310 программистов и 1611 роботов. Сейчас ищут 1706 программистов ...

[РЕШЕНО] Обрезать число до сотых

Тема в разделе "Прочие вопросы по PHP", создана пользователем zevilz, 27 июн 2014.

  1. zevilz

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

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Необходимо обрезать число до сотых. С помощью функций sprint, number_format и round можно обрезать, но они округляют. А мне нужно просто обрезать число. К примеру, число 18035.029 обрезать до 18035.02. Число до точки может быть любое.
    Есть вариант разбить число на 2 части через explode и из второй части оставить только 2 цифры. Но может, что попроще имеется?
     
  2. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Re: Обрезать число до сотых

    intval($x*100)/100;
     
  3. zevilz

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

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    Re: Обрезать число до сотых

    Спасибо за решение проблемы. Проще и не придумаешь))
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    round($x, 2)
     
  5. zevilz

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

    С нами с:
    14 июн 2010
    Сообщения:
    182
    Симпатии:
    0
    round округляет, а не обрезает
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.116
    Симпатии:
    1.244
    Адрес:
    там-сям
    а есть еще ceil() и floor() :)

    результат round, ceil, floor и рецепта из первого ответ — это число с плавающей запятой. возможно это и нужно автору.
    но если речь о выводе на страницу, то… когда число будет (неявно) преобразовываться в строку, может получиться и 0 знаков после запятой, и >2 знаков.

    гарантированный способ получить строку нужного формата это number_format() или printf/sprintf()

    Код (PHP):
    1. <?php
    2. header('Content-type: text/plain');
    3. $f = 1.002;
    4. echo intval($f * 100) / 100 . "\n"; // 1
    5. echo round($f, 2)."\n";             // 1
    6. echo sprintf('%.2F', $f)."\n";      // 1.00 
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    round =)
     
  8. sergej_savelev

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

    С нами с:
    10 янв 2013
    Сообщения:
    18
    Симпатии:
    1
    PHP:
    1. echo preg_replace('/(\..{2}).*/', '$1', '0.298217721661215216'); // 0.29