Spec-Zone.ru › Ruby on Rails 7.2

модуль ActiveSupport::NumberHelper

Публичные методы экземпляров

number_to_currency(число, options = {}) Показать исходный код
# File activesupport/lib/active_support/number_helper.rb, line 139
def number_to_currency(number, options = {})
  NumberToCurrencyConverter.convert(number, options)
end

Форматирует number в строку валюты.

number_to_currency(1234567890.50)  # => "$1,234,567,890.50"
number_to_currency(1234567890.506) # => "$1,234,567,890.51"
number_to_currency("12x34")        # => "$12x34"

number_to_currency(1234567890.50, unit: "£", separator: ",", delimiter: "")
# => "£1234567890,50"

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

Параметры

:locale

Язык, используемый для форматирования. По умолчанию используется текущий язык.

number_to_currency(1234567890.506, locale: :fr)
# => "1 234 567 890,51 €"
:precision

Уровень точности. По умолчанию 2.

number_to_currency(1234567890.123, precision: 3) # => "$1,234,567,890.123"
number_to_currency(0.456789, precision: 0)       # => "$0"
:round_mode

Определяет, как выполняется округление. См. BigDecimal.mode. По умолчанию :default.

number_to_currency(1234567890.01, precision: 0, round_mode: :up)
# => "$1,234,567,891"
:unit

Денежная единица. По умолчанию "$".

:separator

Разделитель дробной части. По умолчанию ".".

:delimiter

Разделитель тысяч. По умолчанию ",".

:format

Формат для неотрицательных чисел. %u представляет валюту, а %n представляет число. По умолчанию "%u%n".

number_to_currency(1234567890.50, format: "%n %u")
# => "1,234,567,890.50 $"
:negative_format

Формат для отрицательных чисел. %u и %n ведут себя так же, как в :format, но %n представляет абсолютное значение числа. По умолчанию значение :format с префиксом -.

number_to_currency(-1234567890.50, negative_format: "(%u%n)")
# => "($1,234,567,890.50)"
:strip_insignificant_zeros

Удалить несущественные нули после десятичной запятой. По умолчанию false.

number_to_currency(1234567890.50, strip_insignificant_zeros: true)
# => "$1,234,567,890.5"
number_to_delimited(число, options = {}) Показать исходный код
# File activesupport/lib/active_support/number_helper.rb, line 242
def number_to_delimited(number, options = {})
  NumberToDelimitedConverter.convert(number, options)
end

Форматирует number, группируя тысячи разделителем.

number_to_delimited(12345678)      # => "12,345,678"
number_to_delimited("123456")      # => "123,456"
number_to_delimited(12345678.9876) # => "12,345,678.9876"
number_to_delimited("12x34")       # => "12x34"

number_to_delimited(12345678.9876, delimiter: ".", separator: ",")
# => "12.345.678,9876"

Параметры

:locale

Язык, используемый для форматирования. По умолчанию используется текущий язык.

number_to_delimited(12345678.05, locale: :fr)
# => "12 345 678,05"
:delimiter

Разделитель тысяч. По умолчанию ",".

number_to_delimited(12345678, delimiter: ".")
# => "12.345.678"
:separator

Разделитель дробной части. По умолчанию ".".

number_to_delimited(12345678.05, separator: " ")
# => "12,345,678 05"
:delimiter_pattern

Регулярное выражение для определения расположения разделителей. Полезно при использовании форматов валют, таких как INR.

number_to_delimited("123456.78", delimiter_pattern: /(\d+?)(?=(\d\d)+(\d)(?!\d))/)
# => "1,23,456.78"
number_to_human(число, options = {}) Показать исходный код
# File activesupport/lib/active_support/number_helper.rb, line 453
def number_to_human(number, options = {})
  NumberToHumanConverter.convert(number, options)
end

Форматирует number в более удобную для восприятия форму. Полезно для чисел, которые могут стать очень большими и трудно читаемыми.

number_to_human(123)                 # => "123"
number_to_human(1234)                # => "1.23 Thousand"
number_to_human(12345)               # => "12.3 Thousand"
number_to_human(1234567)             # => "1.23 Million"
number_to_human(1234567890)          # => "1.23 Billion"
number_to_human(1234567890123)       # => "1.23 Trillion"
number_to_human(1234567890123456)    # => "1.23 Quadrillion"
number_to_human(1234567890123456789) # => "1230 Quadrillion"

См. number_to_human_size, если вы хотите красиво отобразить размер файла.

Параметры

:locale

Язык, используемый для форматирования. По умолчанию используется текущий язык.

:precision

Уровень точности. По умолчанию 3.

number_to_human(123456, precision: 2) # => "120 Thousand"
number_to_human(123456, precision: 4) # => "123.5 Thousand"
:round_mode

Определяет, как выполняется округление. См. BigDecimal.mode. По умолчанию :default.

number_to_human(123456, precision: 2, round_mode: :up)
# => "130 Thousand"
:significant

Применять ли :precision к значащим цифрам вместо дробных. По умолчанию true.

:separator

Разделитель дробной части. По умолчанию ".".

number_to_human(123456, precision: 4, separator: ",")
# => "123,5 Thousand"
:delimiter

Разделитель тысяч. По умолчанию ",".

:strip_insignificant_zeros

Удалять ли несущественные нули после десятичной запятой. По умолчанию true.

number_to_human(1000000)                                   # => "1 Million"
number_to_human(1000000, strip_insignificant_zeros: false) # => "1.00 Million"
number_to_human(10.01)                                     # => "10"
number_to_human(10.01, strip_insignificant_zeros: false)   # => "10.0"
:format

Формат вывода. %n представляет число, а %u представляет квантификатор (например, «Тысяча»). По умолчанию "%n %u".

:units

Словарь пользовательских имен квантификаторов единиц.

number_to_human(1, units: { unit: "m", thousand: "km" })        # => "1 m"
number_to_human(100, units: { unit: "m", thousand: "km" })      # => "100 m"
number_to_human(1000, units: { unit: "m", thousand: "km" })     # => "1 km"
number_to_human(100000, units: { unit: "m", thousand: "km" })   # => "100 km"
number_to_human(10000000, units: { unit: "m", thousand: "km" }) # => "10000 km"

Поддерживаются следующие ключи для целочисленных единиц: :unit, :ten, :hundred, :thousand, :million, :billion, :trillion, :quadrillion . Кроме того, следующие ключи поддерживаются для дробных единиц: :deci, :centi, :mili, :micro, :nano, :pico, :femto.

Словарь также может быть определен как область в I18n-языковой локали. Например:

en:
  distance:
    centi:
      one: "centimeter"
      other: "centimeters"
    unit:
      one: "meter"
      other: "meters"
    thousand:
      one: "kilometer"
      other: "kilometers"

Затем он может быть указан по имени:

number_to_human(1, units: :distance)        # => "1 meter"
number_to_human(100, units: :distance)      # => "100 meters"
number_to_human(1000, units: :distance)     # => "1 kilometer"
number_to_human(100000, units: :distance)   # => "100 kilometers"
number_to_human(10000000, units: :distance) # => "10000 kilometers"
number_to_human(0.1, units: :distance)      # => "10 centimeters"
number_to_human(0.01, units: :distance)     # => "1 centimeter"
number_to_human_size(число, options = {}) Показать исходный код
# File activesupport/lib/active_support/number_helper.rb, line 351
def number_to_human_size(number, options = {})
  NumberToHumanSizeConverter.convert(number, options)
end

Форматирует number в байтах в более удобную для восприятия форму. Полезно для отображения размеров файлов пользователю.

number_to_human_size(123)                 # => "123 Bytes"
number_to_human_size(1234)                # => "1.21 KB"
number_to_human_size(12345)               # => "12.1 KB"
number_to_human_size(1234567)             # => "1.18 MB"
number_to_human_size(1234567890)          # => "1.15 GB"
number_to_human_size(1234567890123)       # => "1.12 TB"
number_to_human_size(1234567890123456)    # => "1.1 PB"
number_to_human_size(1234567890123456789) # => "1.07 EB"

См. number_to_human, если вы хотите красиво отобразить общее число.

Параметры

:locale

Язык, используемый для форматирования. По умолчанию используется текущий язык.

:precision

Уровень точности. По умолчанию 3.

number_to_human_size(123456, precision: 2)  # => "120 KB"
number_to_human_size(1234567, precision: 2) # => "1.2 MB"
:round_mode

Определяет, как выполняется округление. См. BigDecimal.mode. По умолчанию :default.

number_to_human_size(123456, precision: 2, round_mode: :up)
# => "130 KB"
:significant

Применять ли :precision к значащим цифрам вместо дробных. По умолчанию true.

:separator

Разделитель дробной части. По умолчанию ".".

number_to_human_size(1234567, separator: ",")
# => "1,18 MB"
:delimiter

Разделитель тысяч. По умолчанию ",".

:strip_insignificant_zeros

Удалить ли несущественные нули после десятичной запятой. По умолчанию true.

number_to_percentage(число, options = {}) Показать исходный код
# File activesupport/lib/active_support/number_helper.rb, line 201
def number_to_percentage(number, options = {})
  NumberToPercentageConverter.convert(number, options)
end

Форматирует number в строку процента.

number_to_percentage(100)   # => "100.000%"
number_to_percentage("99")  # => "99.000%"
number_to_percentage("99x") # => "99x%"

number_to_percentage(12345.6789, delimiter: ".", separator: ",", precision: 2)
# => "12.345,68%"

Параметры

:locale

Язык, используемый для форматирования. По умолчанию используется текущий язык.

number_to_percentage(1000, locale: :fr)
# => "1000,000%"
:precision

Уровень точности или nil для сохранения точности number. По умолчанию 2.

number_to_percentage(12.3456789, precision: 4) # => "12.3457%"
number_to_percentage(99.999, precision: 0)     # => "100%"
number_to_percentage(99.999, precision: nil)   # => "99.999%"
:round_mode

Определяет, как выполняется округление. См. BigDecimal.mode. По умолчанию :default.

number_to_percentage(12.3456789, precision: 4, round_mode: :down)
# => "12.3456%"
:significant

Применять ли :precision к значащим цифрам вместо дробных. По умолчанию false.

number_to_percentage(12345.6789)                                  # => "12345.679%"
number_to_percentage(12345.6789, significant: true)               # => "12300%"
number_to_percentage(12345.6789, precision: 2)                    # => "12345.68%"
number_to_percentage(12345.6789, precision: 2, significant: true) # => "12000%"
:separator

Разделитель дробной части. По умолчанию ".".

:delimiter

Разделитель тысяч. По умолчанию ",".

:strip_insignificant_zeros

Удалить ли несущественные нули после десятичной запятой. По умолчанию false.

:format

Формат вывода. %n представляет число. По умолчанию "%n%".

number_to_percentage(100, format: "%n  %")
# => "100.000  %"
number_to_phone(number, options = {}) Показать исходный код
# File activesupport/lib/active_support/number_helper.rb, line 66
def number_to_phone(number, options = {})
  NumberToPhoneConverter.convert(number, options)
end

Форматирует number в номер телефона.

number_to_phone(5551234)    # => "555-1234"
number_to_phone("5551234")  # => "555-1234"
number_to_phone(1235551234) # => "123-555-1234"
number_to_phone("12x34")    # => "12x34"

number_to_phone(1235551234, delimiter: ".", country_code: 1, extension: 1343)
# => "+1.123.555.1234 x 1343"

Параметры

:area_code

Использовать скобки для кода города. По умолчанию false.

number_to_phone(1235551234, area_code: true)
# => "(123) 555-1234"
:delimiter

Разделитель групп цифр. По умолчанию "-".

number_to_phone(1235551234, delimiter: " ")
# => "123 555 1234"
:country_code

Код страны для добавления в начало.

number_to_phone(1235551234, country_code: 1)
# => "+1-123-555-1234"
:extension

Дополнение для добавления в конец.

number_to_phone(1235551234, extension: 555)
# => "123-555-1234 x 555"
:pattern

Регулярное выражение, определяющее, как должны быть сгруппированы цифры. Первые три захвата из регулярного выражения обрабатываются как группы цифр.

number_to_phone(13312345678, pattern: /(\d{3})(\d{4})(\d{4})$/)
# => "133-1234-5678"
number_to_phone(75561234567, pattern: /(\d{1,4})(\d{4})(\d{4})$/, area_code: true)
# => "(755) 6123-4567"
number_to_rounded(number, options = {}) Показать исходный код
# File activesupport/lib/active_support/number_helper.rb, line 298
def number_to_rounded(number, options = {})
  NumberToRoundedConverter.convert(number, options)
end

Форматирует number до определенной точности.

number_to_rounded(12345.6789)                # => "12345.679"
number_to_rounded(12345.6789, precision: 2)  # => "12345.68"
number_to_rounded(12345.6789, precision: 0)  # => "12345"
number_to_rounded(12345, precision: 5)       # => "12345.00000"

Параметры

:locale

Локаль для форматирования. По умолчанию текущая локаль.

number_to_rounded(111.234, locale: :fr)
# => "111,234"
:precision

Уровень точности или nil для сохранения точности number. По умолчанию 3.

number_to_rounded(12345.6789, precision: nil)
# => "12345.6789"
:round_mode

Способ округления. См. BigDecimal.mode. По умолчанию :default.

number_to_rounded(12.34, precision: 0, round_mode: :up)
# => "13"
:significant

Применять округление к значащим цифрам вместо дробных. По умолчанию false.

number_to_rounded(12345.6789)                                  # => "12345.679"
number_to_rounded(12345.6789, significant: true)               # => "12300"
number_to_rounded(12345.6789, precision: 2)                    # => "12345.68"
number_to_rounded(12345.6789, precision: 2, significant: true) # => "12000"
:separator

Разделитель десятичных знаков. По умолчанию ".".

:delimiter

Разделитель тысяч. По умолчанию ",".

:strip_insignificant_zeros

Удалять незначительные нули после разделителя десятичных знаков. По умолчанию false.

number_to_rounded(12.34, strip_insignificant_zeros: false)  # => "12.340"
number_to_rounded(12.34, strip_insignificant_zeros: true)   # => "12.34"
number_to_rounded(12.3456, strip_insignificant_zeros: true) # => "12.346"

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API