Сделать так, чтобы Rails 'number_to_percentage выводил динамическое количество десятичных знаков, основываясь на входном значении? - PullRequest
0 голосов
/ 19 февраля 2019

Я бы хотел использовать метод Rails 'number_to_percentage, чтобы отобразить десятичное число, которое у меня есть в диапазоне от 0 до 100 в процентах, включая все десятичные цифры числа, и без лишнихзавершающие нули.

Некоторые примеры входных данных и соответствующие им желаемые выходы:

12        => "12%"
12.3      => "12.3%"
12.34     => "12.34%"
12.345    => "12.345%"
12.3456   => "12.3456%"

Как указано в документации, number_to_percentage имеет точность по умолчанию 3, поэтому number_to_percentage(12.3456) дает "12.346%"вместо моего желаемого значения.Точно так же number_to_percentage(12) дает "12.000%" вместо просто "12%".

Я экспериментировал с комбинациями различных значений для параметров precision, significant и strip_insignificant_zeroes для number_to_percentage, но не получая его, чтобы получить желаемые результаты.

Есть ли способ использования number_to_percentage, чтобы он дал желаемые результаты?Или это не предназначенная функция number_to_percentage, и я должен выбрать другой подход - например, просто добавить '%' в конец ввода, используя базовые операции со строками?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Сначала вам нужно определить, сколько цифр после десятичной дроби.Вы можете сделать это, используя следующее:

precision= n.to_s.partition('.').last.size

Затем вы можете установить желаемое значение точности.

number_to_percentage(num, precision: precision)
0 голосов
/ 19 февраля 2019

Установка точности на большее число, чем вам нужно, а также установка для strip_insignificant_zeros значения true дает желаемые результаты:

number_to_percentage 12, precision: 100, strip_insignificant_zeros: true
#=> "12%"

number_to_percentage 12.3, precision: 100, strip_insignificant_zeros: true
#=> "12.3%"

number_to_percentage 12.34, precision: 100, strip_insignificant_zeros: true
#=> "12.34%"

number_to_percentage 12.345, precision: 100, strip_insignificant_zeros: true
#=> "12.345%"

number_to_percentage 12.3456, precision: 100, strip_insignificant_zeros: true
#=> "12.3456%"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...