За последние 24 часа нас посетили 64099 программистов и 1741 робот. Сейчас ищут 833 программиста ...

Убрать сокращение чисел 7e-05

Тема в разделе "PHP для новичков", создана пользователем flautr, 12 фев 2019.

  1. flautr

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

    С нами с:
    4 авг 2015
    Сообщения:
    120
    Симпатии:
    0
    Здравствуйте, столкнулся с проблемой сокращение чисел php.

    Вместо 0.00007 php переделывает в 7e-05 и т.д.
    Все это создает массу проблем, весь код приходиться адаптировать используя
    number_format(7e-05, 8);

    Да и после этого получаю 0.00007000 вместо 0.00007

    Есть ли способ запретить переделывать числа в такое 7e-05

    Спасибо
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    ну ты попросил восемь знаков… машины они такие конкретные
    --- Добавлено ---
    есть ещё функции printf и sprintf с выводом по формату, например sprintf("%.5f", 7e-05)
    можно указать формат '%f' без указания конкретного количества знаков, но это не означает ничего "автоматического" ))) будет действовать число знаков по умолчанию из настроек php
     
    flautr нравится это.
  3. flautr

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

    С нами с:
    4 авг 2015
    Сообщения:
    120
    Симпатии:
    0
    Спасибо, не знал про sprintf("%.5f", 7e-05)
     
  4. flautr

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

    С нами с:
    4 авг 2015
    Сообщения:
    120
    Симпатии:
    0
    Какая-то бессмыслица в использовании sprintf и в '%f'

    sprintf("%.5f", 7e-05) // 0.00007
    sprintf("%.5f", 7e-06) // 0.00001
    sprintf(7e-05) // 7e-05

    Оба варианта не решают проблем. В настройках php
    • Precision = 12
    Понятно то нужно предварительно вытащить %.5f но как то слишком много действий, может существует вариант стандартный)
     
    #4 flautr, 12 фев 2019
    Последнее редактирование: 12 фев 2019
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    оба три варианта? ))) без указания формата функция не должна использоваться, очевидно. я писал про '%f' (без указания точности), а не про отсутствие формата вообще.

    обрезать правые незначащие нули можно через rtrim($f, '0'). но есть но! бывает, что ожидаешь например 0.007, а при высокой точности отображения видишь типа 0.00700000001 - тут очевидно срезать нули не получится.
    используй фиксированный формат и не парься, я считаю.
     
    flautr нравится это.
  6. flautr

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

    С нами с:
    4 авг 2015
    Сообщения:
    120
    Симпатии:
    0
    Cпасибо! Cделал в итоге так:

    $a = sprintf("%.8f", 7e-05);
    $b = rtrim($a, '0');
    echo $b;

    Здорово, спасибо Вам)
     
    #6 flautr, 12 фев 2019
    Последнее редактирование: 12 фев 2019