gpt4 book ai didi

c - Rubyinline sum 具有浮点值的数组元素

转载 作者:行者123 更新时间:2023-11-30 14:26:38 29 4
gpt4 key购买 nike

我正在尝试使用 RubyInline (ruby 1.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

在控制台中运行

ArrayMath.new.sum([1,2.7])

输出3.0显然预期结果是3.7

最佳答案

x 是 C 代码中的 int。如果您不希望 NUM2DBL 的结果被截断,请将其更改为 float(或 double)。

或者完全取消该临时内容并编写:

sum += NUM2DBL(c_arr[i]);

关于c - Rubyinline sum 具有浮点值的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8861244/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com