Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 其中BigDecimal“/&引用;定义是什么?_Ruby - Fatal编程技术网

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);