За последние 24 часа нас посетили 17054 программиста и 1834 робота. Сейчас ищут 1630 программистов ...

как настроить чтобы round() возвращала привычный формат ?!?

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

  1. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Проблема:
    Код (Text):
    1.  
    2. $x = 12000000; // значение х задано для примера,т.к. интересует как раз тот случай, когда значение без дробной части
    3. echo round($x, 2); // возвращает научную форму: 1.2E+7, а надо 12000000
    на локалхосте возвращает как требуется, на внешнем хостинге - научную.
    Полагаю решение нужно искать в php.ini, а может и не там . Кто знает отзовитесь.
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    Re: как настроить чтобы round() возвращала привычный формат

    чувак, echo выводит 127000000, так что хз чем тебе помочь. проверил на Win 64bit и Linux 32bit

    Добавлено спустя 1 минуту 21 секунду:
    Re: как настроить чтобы round() возвращала привычный формат ?!?
    а вообще ты кажется путаешь формат вывода и внутреннее представление числа. вывести можно как угодно.
     
  3. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Re: как настроить чтобы round() возвращала привычный формат

    так и у меня на локалхосте выводит 127000000, а на хостинге в научной форме и это не внутреннее представление числа , а одна из форм записи, и если мы добавим к х еще 0.1 то вывод будет таким, каким мне нужно - 127000000.1 . А вот если без дробной части, то зараза выводит научную форму. Кто сталкивался ??????
    немножко пример неправильный привел. 127000000, тоже нормально выводит, а вот 12000000 уже выводит как 1.2E+7
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
  5. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Re: как настроить чтобы round() возвращала привычный формат

    фунции форматирования не убирают нули в дробной части, т.е. они вернут 12000000.00 , а эти нулики мне не нужны ... и так их много. Мне нужно так сказать "системное" решение. Код у меня уже написан, чтобы все выводилось как надо, но зачем лишние ресурсы машины тратить, если , допустим, есть какая то настройка php ....
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    Re: как настроить чтобы round() возвращала привычный формат

    не тупи, брат. форматируй как тебе надо. доки читай.

    Добавлено спустя 1 минуту 14 секунд:
    Re: как настроить чтобы round() возвращала привычный формат ?!?
    round изменяет ЧИСЛО. форматирование создает СТРОКУ нужного формата. используй сначала round, затем форматируй как тебе надо.

    Добавлено спустя 4 минуты 49 секунд:
    Re: как настроить чтобы round() возвращала привычный формат ?!?
    оператор echo выводит СТРОКУ. если на входе у него ЧИСЛО, то он сначала приводит его к какому-то строковому формату, который ты не контролируешь. так контролируй!!! сам создай СТРОКУ через sprintf() или еще как, тогда echo выведет твою строку в точности как ты укажешь.
    усёк?
     
  7. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Re: как настроить чтобы round() возвращала привычный формат

    не отформатируется так как мне надо:
    мы можем задать форматирование - вывод без дробной части, но мне то нужно если таковая есть, то ее надо выводить !!!!
    Код (Text):
    1.  
    2. $x = 5.83;
    3. $y = 6;
    4. echo round($x, 2) ; // 5.83
    5. echo round($y, 2) ; // 6
    6. echo number_format($x, 2); // 5.83
    7. echo number_format($y, 2); // 6.00   !!!! - нули после точки мне не нужны. Какая функция форматирования это учитывает, я такую не знаю ??????
     
  8. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    Re: как настроить чтобы round() возвращала привычный формат

    помоему тебе нечем заняться. если тебе надо обрабатывать особые случаи - один раз напиши свою функцию форматирования.

    Добавлено спустя 1 минуту 38 секунд:
    Re: как настроить чтобы round() возвращала привычный формат ?!?
    Код (Text):
    1. как настроить чтобы round() возвращала привычный формат ?!?
    никак
     
  9. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Re: как настроить чтобы round() возвращала привычный формат

    зачем отвечать , если не вникать в суть вопроса и не читать ответы:
    мне нужно НЕ ПРОГРАММНОЕ, а системное решение.
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  11. uorypm

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

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    Re: как настроить чтобы round() возвращала привычный формат

    Yudik, пиши хостеру. Проблема у него. round() не должен себя так вести даже на php <= 5.2.7 (с этой версии изменена логика функции), но мы тебе верим. Поэтому наилучшее сейчас решение или писать хостеру, или писать свою функцию-обработчик.
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: как настроить чтобы round() возвращала привычный формат

    чувак, ты не путай операцию с числом и вывод числа.
     
  13. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Re: как настроить чтобы round() возвращала привычный формат

    а слабо подсказать какие параметры передавать в nuber_format() , чтобы ...
    Код (Text):
    1.  
    2. $x = 12.25;
    3. $y = 12;
    4. echo number_format($x, ПАРАМЕТРЫ???? ); // ...чтобы было 12.25
    5. echo number_format($y, ТЕЖЕ_САМЫЕ_ПАРАМЕТРЫ????!!! ); // ...чтобы было 12
    и я то читаю что пишут, но не все читают, что я отвечаю =)

    Добавлено спустя 6 минут 28 секунд:
    Re: как настроить чтобы round() возвращала привычный формат ?!?
    и может кто проверит тоже у себя на хостинге, каковы результаты:
    Код (Text):
    1.  
    2. echo round(12000000 , 2)."<br>";
    3. echo round(127000000 , 2)."<br>";
     
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Re: как настроить чтобы round() возвращала привычный формат

    смотри php.ini -> precision
    так же setlocale()
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: как настроить чтобы round() возвращала привычный формат

    просто так как ты просишь делать не хорошо.
    так что не парься и юзай че взрослые дядьки говорят =)
     
  16. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $x=127000000;
    2. echo round($x,2); // 127000000 
    Проблем не вижу...
    А что собственно не так? :D
     
  17. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Re: как настроить чтобы round() возвращала привычный формат

    фигню ты какую то сказал. Покажи что знаешь, а потом уж и говори, что нужно юзать.
    а попробуй $x=12000000

    Добавлено спустя 1 минуту 40 секунд:
    Re: как настроить чтобы round() возвращала привычный формат ?!?
    хоть один ответ в тему
     
  18. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: как настроить чтобы round() возвращала привычный формат

    бабушку свою на слабо можешь брать. =)

    тебе сказали, а ты делай как хочешь. пора становиться взрослым.
    нет, не в тему. ты ищешь там где светлее.
     
  19. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Re: как настроить чтобы round() возвращала привычный формат

    вы ему хз че советуете, а нужно всего лишь
    ini_set("precision","15");
    локаль для форматирования разделителей понадобится.
     
  20. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: как настроить чтобы round() возвращала привычный формат

    дада
     
  21. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Re: как настроить чтобы round() возвращала привычный формат

    а бабушка мне не говорит как в решете воду носить (потому что она знает, что не получится), и если так смущает слово "слабо" спрошу иначе - если знаешь какие параметры передавать, чтобы
    Код (Text):
    1. $x = 12.25;
    2. $y = 12;
    3. echo number_format($x, ПАРАМЕТРЫ???? ); // ...чтобы было 12.25
    4. echo number_format($y, ТЕЖЕ_САМЫЕ_ПАРАМЕТРЫ????!!! ); // ...чтобы было 12
    то подскажи, пожайлуста.
    :) почему то в обратную сторону работает , т.е. если по дефолту (ini_set("precision","14")) то
    Код (Text):
    1.  
    2. echo round(127000000); // 127000000
    3. echo round(12000000); // 1.2E+7
    4.  
    а если сделать ini_set("precision","15") (или ini_set("precision","13") ), то
    Код (Text):
    1.  
    2. echo round(127000000); // 1.27E+8
    3. echo round(12000000); // 1.2E+7
     
  22. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: как настроить чтобы round() возвращала привычный формат

    параметров таких нет.
    не надо так делать в любом случае.
     
  23. Yudik

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

    С нами с:
    25 фев 2011
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    где то в РФ
    Re: как настроить чтобы round() возвращала привычный формат

    Вот, именно, что нет, и нефиг меня в маны посылать, не вникнув в задачу
     
  24. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Re: как настроить чтобы round() возвращала привычный формат

    попробуй сделать
    Код (Text):
    1. ini_set("precision","15");
    2. phpinfo();
    и посмотри какое там будет Local value

    если не получится, юзай sprintf(), там можно вывести float с заданой точностью или вывести как целое
     
  25. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: как настроить чтобы round() возвращала привычный формат

    не надо резать нули, в таком случае, какая бы там у тебя в голове задача ни была.

    что с тобой? концепция поменялась? а как же правка конфигов?