Nano Hash - криптовалюты, майнинг, программирование

Форматирование фиксированного десятичного скаляра

Я экспериментировал с sprintf, пытаясь исправить количество цифр как справа от десятичного знака, так и слева.

Следующее работает, но плохо обрабатывает 0.00. Как видите, 0,00 не выравнивается правильно, как и все остальные ненулевые десятичные значения.

sprintf("%.2f ", $sw_chgs)

535.14  642.90  20.31  1198.35
442.74  531.90  20.31  994.95
0.00  0.00  0.00  0.00

Если я добавлю ширину поля или обозначение, например %6f, к sprintf, после десятичной точки будет напечатано «2f».

sprintf("%6f.2f ", $ws_chgs

244.100000.2f

Я хочу сделать что-то вроде следующего, который ограничивает ширину поля всего числа

sprintf("%6d ", $prev_rd)

Возможно ли это с десятичным значением?

17.08.2013

Ответы:


1

Вы неправильно поняли формат printf форматов. Это примерно так:

"%" <padding>? <minimum width>? "." <precision>? <type>

Например. %7.2f. Тогда этот код

say join " : ", map sprintf('%7.2f', $_), @$_ for
  [ 535.14, 642.90, 20.31, 1198.35 ],
  [ 442.74, 531.90, 20.31,  994.95 ],
  [   0.00,   0.00,  0.00,    0.00 ],
;

отпечатки

 535.14 :  642.90 :   20.31 : 1198.35
 442.74 :  531.90 :   20.31 :  994.95
   0.00 :    0.00 :    0.00 :    0.00

Обратите внимание, что минимальная ширина включает десятичный разделитель.

Аргументы ширины и точности не включают тип, подобный f. Поэтому ваш %6f.2f анализируется как шаблон %6f, который предшествует неспециальной строке .2f.

17.08.2013

2

Обратите внимание, 6 – это количество всех символов вместе в отформатированной строке,

 sprintf("%06.2f ", 1);

выход

001.00

или без ведущих нулей,

sprintf("%6.2f ", 1);

выход

  1.00
17.08.2013
  • спринтф(%6.2f , 1); если не требуется начальное нулевое заполнение 18.08.2013
  • @MiguelPrz спасибо за комментарий 18.08.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..