рубиновая стратегия для преобразования числа с плавающей запятой с помощью лингвистики - PullRequest
1 голос
/ 07 ноября 2010

Итак, я пишу то, что мне показалось простым файлом .rb для преобразования числа с плавающей точкой в ​​строку.Строка возвращает мое число с плавающей запятой в словах.Так что, если у меня будет 11.11, то у меня будет одиннадцать долларов и одиннадцать центов. Пока я расширил класс float, который работал нормально.У меня проблемы с тем, как конвертировать 11 центов в одиннадцать центов.en.numwords отбросит одиннадцать пунктов один.Я думал о том, чтобы попробовать хеш, чтобы решить мою проблему, где 11 => одиннадцать центов.Есть мысли, как я мог это реализовать?Возможно, лучший способ реализовать это?

Вот что у меня есть:

 require 'rubygems'
 require 'linguistics'
 Linguistics::use( :en )



 class Float
 def to_test_string
 puts self #check
 puts self.en.numwords
 self.en.numwords
 end

 end

 puts "Enter two great floating point numbers for adding"
 puts "First number"
 c = gets.to_f
 puts "Second number" 
 d = gets.to_f
 e = c+d
 # puts e
 puts e.to_test_string
 puts "Enter a great floating number! Example 10.34"
 a = gets.to_f
 # puts a
 puts a.to_test_string

Спасибо за помощь!Разместите некоторый код, чтобы я мог попробовать свои идеи!

Ответы [ 2 ]

1 голос
/ 07 ноября 2010

Вот одно из решений: разделить число на две подстроки на основе разделителя десятичной точки, вызвать en.numwords для каждой подстроки в отдельности, а затем соединить получившиеся строки с точкой между ними.Что-то вроде:

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

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

(11.11).my_numwords # => eleven point eleven
0 голосов
/ 07 ноября 2010

Эту проблему можно решить, разбив поплавок на два значения: доллары и центы.

require 'rubygems'
require 'linguistics'
Linguistics::use( :en )

class Float
    def to_test_string
        puts self #check

        #Split into dollars and cents
        cents = self % 1
        dollars = self - cents
        cents = cents * 100

        text = "#{dollars.to_i.en.numwords} dollars and #{cents.to_i.en.numwords} cents"

        puts text
        text
    end
end

puts "Enter two great floating point numbers for adding"
puts "First number"
c = gets.to_f
puts "Second number" 
d = gets.to_f
e = c+d
# puts e
puts e.to_test_string
puts "Enter a great floating number! Example 10.34"
a = gets.to_f
# puts a
puts a.to_test_string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...