За последние 24 часа нас посетили 21689 программистов и 1029 роботов. Сейчас ищут 756 программистов ...

Научная нотация, произвольный порядок

Тема в разделе "PHP для новичков", создана пользователем Алекс7, 20 июл 2017.

  1. Алекс7

    Алекс7 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    3
    Симпатии:
    0
    Добрый день.
    Хочу уменьшить длину строки, которая содержит массив чисел с плавающей запятой. В массиве около 200 - 300 чисел.
    Все числа одного порядка.
    Я определяю этот порядок и далее хочу записать все числа в виде последовательности пяти цифр (мне достаточно такой точности).

    Например, есть числа 1.367892e8; 5.45678921e8; 2.43216789e8 и т.д.
    я хочу получить следующее:
    8 (порядок этих чисел); 13679; 54568; 24322 и т.д.
    Вот пока не пойму, как это сделать - может, сначала записать все числа в соответствующем порядке - то есть 13679e4; 54568e4; 24322e4, а затем убрать порядок? Если да, то как это сделать средствами PHP с максимальной производительностью?
    Или просто умножать все числа на 10 в степени порядок - 4? То есть в данном примере все числа умножить на 10^(8-4)=10^4=10000? Ведь порядок мне известен заранее?
    Или существуют более удобные варианты? Главный фактор - минимальное время операции.
    Заранее большое спасибо за помошь.
     
    #1 Алекс7, 20 июл 2017
    Последнее редактирование: 20 июл 2017
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Если порядок один, конечно, умножьте и отсеките дробную часть. Только нафига эта экономия на спичках?
     
  3. Алекс7

    Алекс7 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    3
    Симпатии:
    0
    Спасибо.
    Это элемент серверного кода программы. Генерируется строка, которую подгружает приложение на стороне клиента (на смартфоне).
    Цель - максимальное снижение времени после нажатия кнопки на экране смартфона, после чего происходит запрос на сервер, и получения данных.
    Поэтому хочу максимально уменьшить длину этой строки, ведь один лишний символ - это один байт. И чем больше байт сэкономить, тем быстрее загрузится строка и тем самым повысится отзывчивость приложения (имхо). Может, конечно, и не сильно повысится, но хочется сделать максимум из того, что можно сделать.
    Здесь конечно еще вопрос - умножая все числа на 10000, не увеличу ли я время вычислений на серверной части на величину большую той, которую получу уменьшением времени загрузки строки, - ведь тогда получится даже хуже.
     
  4. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    200-300 умножений погоды для скорости на современном оборудовании не сделают. На сервере наиболее затратная операция обычно - запрос к базе данных
     
  5. Алекс7

    Алекс7 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    3
    Симпатии:
    0
    А как быстрее всего число умножить на 10 в степени?
    Или как быстро изменить порядок числа с плавающей запятой - например, отнять 4 от порядка?
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а с чего ты взял, что это окажет видимый глазу эффект?
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    @Алекс7 используй gzip чтобы сократить объем передаваемых данных