What is CDbl doing?
直到最近,我才对VB.NET中的
如果我有这个字符串:
1 | Dim s As String ="12345.12345-" |
我这样做:
1 | Dim d As Double = CDbl(s) |
-
Double.Parse 不适用于以上输入。 -
Double.TryParse 不起作用。 -
Convert.ToDouble 不起作用。
它使用Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble()。该函数在对象的GetTypeCode()返回值上包含一个Select语句,因此它可以基于参数的类型使用自定义转换器。字符串转换器考虑字符串可能包含货币值的可能性,并对字符串进行一些处理以解决该问题。货币值的一种允许格式是尾随负号。
这不是特别便宜。实现相同转换的最快方法是:
1 2 | Dim s As String ="12345.12345-" Dim d As Double = Double.Parse(s, Globalization.NumberStyles.Any) |
在Visual Basic 4/5/6中,这始终是
(由于从QBasic购买了功能,因此与.NET Visual Basic以前的版本很奇怪。)
如果进入"控制面板"中的"区域选项",则有一个设置让您将减号放在数字之后,而不是之前。
我不确定哪个系统在数字后使用减号,但是似乎CDbl已编程为接受两者。在接受和所有方面保持开放。
区域选项还在括号中的负数设置。那样有用吗? -