This is strange but seems that putting Double in array or dictionary circumcises it to Float, is that for real?
BrightScript Debugger> d# = 1.23# : ? d#, type(d#)
1.23 Double
BrightScript Debugger> a = [d#][0] : ? a, type(a)
1.23 roFloat
BrightScript Debugger> h = {h: d#}.h : ? h, type(h)
1.23 roFloat