gpt4 book ai didi

vb.net - CDbl在做什么?

转载 作者:行者123 更新时间:2023-12-04 00:53:32 28 4
gpt4 key购买 nike

直到最近,我一直认为 CDbl(x) VB.NET 中的操作本质上是一个强制转换(即 C# 中 (double)x 的 VB 等价物);但最近的一项发现表明情况并非如此。

如果我有这个字符串:

Dim s As String = "12345.12345-"

我这样做:
Dim d As Double = CDbl(s)
d将设置为值 -12345.12345 !现在,不要误会我的意思,这在我的特定场景中有点方便;但我不得不承认我很困惑为什么会这样。特别是,我很困惑,因为:
  • Double.Parse不适用于上述输入。
  • Double.TryParse不起作用。
  • Convert.ToDouble不起作用。

  • 怎么样 CDbl这么聪明?

    最佳答案

    它使用 Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble()。该函数在对象的 GetTypeCode() 返回值上包含一个 Select 语句,因此它可以使用基于参数类型的自定义转换器。字符串转换器会考虑字符串可能包含货币值的可能性,并对字符串进行一些处理以解决该问题。货币值的一种允许格式是尾随负号。

    这不是特别便宜。实现相同转换的最快方法是:

    Dim s As String = "12345.12345-"
    Dim d As Double = Double.Parse(s, Globalization.NumberStyles.Any)

    关于vb.net - CDbl在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653012/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com