如何对 Ruby 数组执行逐元素乘法?
How can I perform element-wise multiplication for Ruby arrays?
课程、学分和分数是 Ruby 个大小相等的数组。
gpa = (([credits, courses, points].transpose.map {|x| x.reduce(:*)}).inject{|sum,x| sum + x }).round(2)
此方法在我尝试 运行 时提示错误消息。
错误信息:
in 'each': undefined method '*' for nil:NilClass (NoMethodError)
从报错信息来看,好像有部分数据是nil
.
也许您可以尝试将数据强制为浮点数。
这并不理想,因为您最终可能会出现静默错误,但值得一试。
尝试:
[credits, courses, points].transpose.map {|a| a.map {|n| n.to_f} } .map { |x| x.reduce(:*) } .inject{|sum, x| sum + x} .round(2)
即使是字符串和奇怪的数据,它也适用于我(尽管不兼容的数据只是简单地转换为零,影响了数学)。
课程、学分和分数是 Ruby 个大小相等的数组。
gpa = (([credits, courses, points].transpose.map {|x| x.reduce(:*)}).inject{|sum,x| sum + x }).round(2)
此方法在我尝试 运行 时提示错误消息。
错误信息:
in 'each': undefined method '*' for nil:NilClass (NoMethodError)
从报错信息来看,好像有部分数据是nil
.
也许您可以尝试将数据强制为浮点数。
这并不理想,因为您最终可能会出现静默错误,但值得一试。
尝试:
[credits, courses, points].transpose.map {|a| a.map {|n| n.to_f} } .map { |x| x.reduce(:*) } .inject{|sum, x| sum + x} .round(2)
即使是字符串和奇怪的数据,它也适用于我(尽管不兼容的数据只是简单地转换为零,影响了数学)。