support double and float types