модуль ActiveSupport::NumberHelper
Публичные методы экземпляров
# 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"
# 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"
# 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"
# 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.
# 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 %"
# 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"
# 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.