Ruby 其中BigDecimal“/&引用;定义是什么?
我认为Ruby 其中BigDecimal“/&引用;定义是什么?,ruby,Ruby,我认为'3.0'。to d.div(2)与'3.0'相同。to d/2,但前者返回1,而后者返回1.5 我在Bigdecimal的github存储库中搜索了def/,但找不到它 我在哪里可以找到定义?在Bigdecimal中,哪种方法等效于/ 在Float中有一个fdiv方法。Bigdecimal中有类似的吗?您可以在链接到的存储库中的Bigdecimal库的源代码中找到它BigDecimal#/绑定到函数BigDecimal\u div: rb_define_method(rb_cBigDe
'3.0'。to d.div(2)
与'3.0'相同。to d/2
,但前者返回1
,而后者返回1.5
我在Bigdecimal的github存储库中搜索了def/
,但找不到它
我在哪里可以找到定义?在Bigdecimal中,哪种方法等效于/
在
Float
中有一个fdiv
方法。Bigdecimal
中有类似的吗?您可以在链接到的存储库中的Bigdecimal
库的源代码中找到它BigDecimal#/
绑定到函数BigDecimal\u div
:
rb_define_method(rb_cBigDecimal, "/", BigDecimal_div, 1);
:
这是因为BigDecimal#div接受第二个参数precision,默认值为1
irb(main):017:0> '3.0'.to_d.div(2, 2)
=> 0.15e1
但是,当在BigDecimal上定义/时
rb_define_method(rb_cBigDecimal, "/", BigDecimal_div, 1);
他们用1表示参数的#,而不是-1,这意味着“参数数量可变”。因此BigDecimal#div认为它需要一个必需参数和一个可选参数,而BigDecimal#/需要一个必需参数,而可选参数被忽略。由于可选参数被忽略,因此未正确初始化,因此它将获得一个空int或0
这可能被认为是一个bug。你应该考虑用Ruby DEVS打开一个问题。
rb_define_method(rb_cBigDecimal, "/", BigDecimal_div, 1);