Windows变体强制规则



我有一个WindowsVARIANT,其中包含一个(假定)数值的BSTR。

我想使用VariantChangeType将此BSTR值转换为VT_I4或VT_I8或。。。

令我惊讶的是,传入一个字符串值"5.6".是我的十进制分隔符,该函数成功地进行了整数转换,得到的lValllVal值是6!我本来预计会出现转换错误,或者5的值,这就是sscanf给我的值

-->是否有VARIANT转换函数使用的转换规则的文档<--

我发现VariantChangeType是通过(例如)VarI4FromStr实现的,但该函数使用的转换规则中有信息。

似乎没有任何关于这方面的文档。

通过链接的MSDN线程和一些调试,我可以得出结论:

  • VariantChangeType确实调用了数据类型转换函数(如前所述)
  • VarI4FromStr似乎在内部调用VarR8FromStr——这解释了我们如何进行舍入
  • VarR*FromStr似乎调用了VarParseNumFromStr
  • VarParseNumFromStr似乎没有进一步委托数字解析本身(我在VS2010中的快速测试);它没有记录任何解析规则AFAIK
  • Rounding似乎使用了Round Half to Even或一些变体

相关内容

  • 没有找到相关文章

最新更新