C 带浮点值的RubyLine和数组元素

C 带浮点值的RubyLine和数组元素,c,ruby,C,Ruby,我试图用RubyLine(Ruby1.9.2)在C中添加ruby数组的浮点值。预期输出应为浮点值。这是我的密码: require 'inline' class ArrayMath inline :C do |builder| builder.c " VALUE sum(VALUE arr){ int size = RARRAY_LEN(arr); VALUE *c_arr = RARRAY_PTR(arr);

我试图用RubyLine(Ruby1.9.2)在C中添加ruby数组的浮点值。预期输出应为浮点值。这是我的密码:

require 'inline'
class ArrayMath

inline :C do |builder|
   builder.c "
        VALUE sum(VALUE arr){

            int size = RARRAY_LEN(arr);
            VALUE *c_arr = RARRAY_PTR(arr);

            int i, x;
            float sum = 0.0;
            for (i=0; i<size; i++)
            {
                x = NUM2DBL(c_arr[i]);
                sum += x;
            }

            return( rb_float_new(sum) );
        }"
   end
end
产出3.0
显然,预期的结果是3.7

x
是C代码中的
int
。如果不希望截断
NUM2DBL
的结果,请将其更改为
浮点值(或
双精度值)

或者干脆扔掉那些临时的,写下:

sum += NUM2DBL(c_arr[i]);

我不敢相信我忽略了这一点。我想该睡觉了。非常感谢。
sum += NUM2DBL(c_arr[i]);