在数据库中表示重复小数的好方法是什么?
例如2.818181
,81
重复
理念一
分成2.818181
不重复和重复的部分,然后non_repeat = 2.0
和repeat = .007
class Decimal < ActiveRecord::Base
attr_accessible :non_repeat, :repeat #floats
def to_f
to_s.to_f
end
def to_s
"#{non_repeat + repeat}#{repeat.to_s.gsub(/0\./, '') * 3}" #approximation
end
def self.random_new
a = rand(100)
b = rand(100) / 100.0
self.new(non_repeat: a, repeat: b)
end
end
想法 2
使用分数,这意味着2.818181
变成31/11
,保存两个整数31
和11
class Decimal < ActiveRecord::Base
attr_accessible :numerator, :denominator #integers
def to_f
numerator / denominator
end
def to_s
to_f.to_s
end
def self.random_new
a = rand(100)
b = random_prime(...) # like 7, 9, 11
self.new(numerator: a, denominator: b)
end
end
为了随机生成重复小数,哪个想法更好?还是有其他方法?