I have a Windows VARIANT holding a BSTR with a (supposedly) numeric value.
I want to use VariantChangeType to convert this BSTR value to a VT_I4 or VT_I8 or ...
To my surprise, passing in a string value of "5.6", . being my decimal separator, the function succeeds for integer conversion, and the resulting lValor llVal value is 6! I would have expected either a conversion error, or a value of 5, which is what sscanf gives me.
--> Is there any documentation for the conversion rules used by the VARIANT conversion functions? <--
I found that VariantChangeType is implemented through (e.g.) VarI4FromStr, but there is zero info wrt. the conversion rules used by this function.
                        
There does not seem to be any documentation with regard to this.
From the linked MSDN thread and a bit of debugging, I can conclude:
VariantChangeTypedoes call the Data Type Conversion Functions (as noted)VarI4FromStrseems to callVarR8FromStrinternally - this explains how we have roundingVarR*FromStrseems to callVarParseNumFromStrVarParseNumFromStrdoes not seem to further delegate the numeric parsing itself (quick test of mine in VS2010); it doesn't document any parsing rules AFAIK.