Преобразование числа с плавающей запятой в слова

Как получить словесный эквивалент числа с плавающей запятой? Например.

  • 10.24 → десять целых двадцать четыре
  • 5.113 → пять целых сто тринадцать

person omrfarukcan    schedule 05.12.2014    source источник
comment
Вы имеете в виду, что у вас есть число, и вы хотите получить словесное представление этого числа?   -  person daremkd    schedule 06.12.2014
comment
в яблочко! я хочу получить слово чисел с плавающей запятой   -  person omrfarukcan    schedule 06.12.2014
comment
Я рекомендую вам использовать жемчужину лингвистики, см. мой ответ.   -  person daremkd    schedule 06.12.2014


Ответы (2)


Для этого есть жемчужина под названием numbers_and_words! Я использовал его в нескольких проектах без каких-либо проблем до сих пор.

person Alex    schedule 06.12.2014

Используйте гем лингвистика:

require 'linguistics'
Linguistics.use( :en )

p 10.24.en.numwords #=> "ten point two four"
p 5.113.en.numwords #=> "five point one one three"

или попробуйте использовать этот хак, как описано в этом ответе, чтобы получить большую точность:

require "linguistics"
Linguistics::use(:en)

class Float
  def my_numwords
    self.to_s.split('.').collect { |n| n.en.numwords }.join(' point ')
  end
end

p 10.24.my_numwords #=> "ten point two four"
p 5.113.my_numwords #=> ""five point one hundred and thirteen"
person daremkd    schedule 06.12.2014