Please keep in mind that in your code you are setting text values regardless of the datatype specified in the schema. The schema identifies how to interperet the text value. But in your code, when setting a value, you must specify a text value when you are using the .text property.
If you want to not convert to a string, you might try using .nodeTypedValue instead. I believe (please verify yourself) that this will allow you to use an actual decimal value.
Greg Collins [InfoPath MVP]
InfoPathDev