1

data type error in Ruby

Hi, i want to modify the COP of CoilCoolingDXSingleSpeed according to a csv file:

arr_of_arrs = CSV.read('C:\Users\sdl06\Documents\essence-144\144assumption\PTAC_Efficiency.csv')

coils.each do |coil|
   arr_of_arrs.each do |arr|
      if coil.name.get.casecmp(arr[0])==0
         coil.setRatedCOP(arr[1].to_f)
      end
   end
end

However, I got error like that:

TypeError: Expected argument 1 of type boost::optional< double >, but got String "3.98"
        in SWIG method 'setRatedCOP'

I know that is data type error, but I don't know how to transfer Float to Double. Any suggestion? Thanks!

dalin_si's avatar
496
dalin_si
asked 2017-02-13 14:58:27 -0500
__AmirRoth__'s avatar
4.4k
__AmirRoth__
updated 2017-08-05 07:36:00 -0500
edit flag offensive 0 remove flag close merge delete

Comments

1

Well arr[1].to_f should convert the value to a float but SWIG thinks it is being pass a string, so that is odd. I would try:

puts "#{arr[1].to_f}, #{arr[1].to_f.class}"

If the argument is a float and SWIG rejects it then I would try:

coil.setRatedCOP(OpenStudio::OptionalDouble.new(arr[1].to_f))

We have standardized away from methods taking OptionalDouble values as input but these still remain in the older APIs.

macumber's avatar macumber (2017-02-13 15:17:58 -0500) edit

This is a known issue for CoilCoolingDXSingleSpeed.

ericringold's avatar ericringold (2017-02-13 15:37:04 -0500) edit

@macumber Thx! I figured out

dalin_si's avatar dalin_si (2017-02-13 15:39:30 -0500) edit
add a comment see more comments

1 Answer

2

Ok, now I figured out

only one adding one line:

cop = OpenStudio::OptionalDouble.new(arr[1].to_f)

to transfer Float to OpenStudio::OptionalDouble

then:

coil.setRatedCOP(cop)
dalin_si's avatar
496
dalin_si
answered 2017-02-13 15:38:28 -0500
edit flag offensive 0 remove flag delete link

Comments

add a comment see more comments