C 带浮点值的RubyLine和数组元素
我试图用RubyLine(Ruby1.9.2)在C中添加ruby数组的浮点值。预期输出应为浮点值。这是我的密码: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);
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]);