📅  最后修改于: 2023-12-03 15:34:45.390000             🧑  作者: Mango
在 Ruby 中,Float#rationalize() 方法可以将浮点数转换为 Rational 类型。
float.rationalize([eps])
eps
: 可选参数,用于指定转换时的精度值,默认值为 0.0001。返回一个 Rational 类型的对象。
# 将浮点数转换为分数
a = 3.14159
b = a.rationalize
puts b # 157079/50000
# 指定精度值进行转换
c = 0.333333
d = c.rationalize(0.000001)
puts d # 1/3
以上代码首先将浮点数 3.14159 转换为分数,输出结果为 157079/50000;然后指定精度值为 0.000001 对浮点数 0.333333 进行转换,输出结果为 1/3,即近似值。
需要注意的是,由于浮点数的精度限制,将浮点数转换为 Rational 类型并不总是能够保证精确结果。如果需要精确计算,应该使用 BigDecimal 类型。