对于Ruby中的任意精度浮点十进制算术,我们可以使用库BigDecimal
。不幸的是,与浮点数相比,每个显式给定的BigDecimal
都需要大量键入:
bd = BigDecimal("42.0")
# vs.
fl = 42.0
是否可以在Ruby中定义自己的文字?
例如,上面的BigDecimal
可以表示为:
bd = 42°0
或至少:
bd = %b(42.0)
答案 0 :(得分:1)
否,Ruby不允许用户定义文字,文字重载或任何其他类似的东西。
Ruby 确实允许为现有运算符定义运算符方法,但不能定义新运算符,因此即使处理
42°0
作为二进制运算符°
无效。
您可以获得的最接近的方法是在°
上用猴子修补Integer
方法:
class Integer
def °(decimal_part)
BigDecimal("#{self}.#{decimal_part}")
end
end
答案 1 :(得分:0)
您可能会:
def b(number)
BigDecimal(number)
end
然后b(42.0)
就可以了,非常接近%b(42.0)