如何在Ruby扩展中用C语言表示无穷大

3

我想做相当于以下操作的事情:

::Infinity= 1.0/0

在一个用C语言编写的Ruby扩展中。

到目前为止,我已经想出了以下内容:

rb_const_set(rb_mKernel, rb_intern("Infinity"), rb_float_new(1.0/0));

由于除以零,编译器会给我一个警告。

rb_const_set(rb_mKernel, rb_intern("Infinity"), rb_eval_string("1.0/0"));

由于使用了 eval,导致代码看起来不美观。

有没有一种干净、合适的解决方案呢?


Float::INFINITY提供不了您需要的东西吗? - Jörg W Mittag
嗯,Float::INFINITY似乎只在ruby1.9中有效。 - johannes
1
Float::INFINITY是在Ruby 1.9.2中添加的,该版本已经发布了超过14个月。 - Jörg W Mittag
1.8仍然广泛使用。 - johannes
1个回答

1

我在这个问题中找到了答案。

rb_const_set(rb_mKernel, rb_intern("Infinity"), rb_float_new(INFINITY));

这个没有编译器警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接