【发布时间】:2019-12-30 14:09:19
【问题描述】:
我是一名长期的 C# 开发人员,最近不得不查看一些 VB6 代码。经过一番挖掘,我们发现在某个地方,不知何故,我们将一个数字存储为一个字符串。现在我们正在阅读它,我们的代码并没有很好地处理文化差异。这是一个例子:
Dim text as String
Dim myVal as Double
Set text = "1,123456"
'This sets the value of myVal to 1123456 on our system - incorrect
myVal = text
Set text = "1.123456"
'This sets the value of myVal to 1.123456 on our system - correct
myVal = text
请记住,这是 VB6 而不是 VB.NET,是否有任何内置方法、函数等可以使用特定文化将字符串转换为双精度值? 或者至少,暗示我们可能正在处理不同格式的转换?
我们仍在挖掘值是如何写入的,看看我们是否可以对流程进行逆向工程,从而为我们提供一致的结果。但是,我们的客户已经拥有(拥有)一种格式或另一种格式的数据(或两者都有,我们正在检查......),因此此时适当的转换算法或实现将是一个更好的答案。
【问题讨论】:
-
您将需要一些有关数字来自何处的上下文,才能知道如何转换它。对于一个非常简单的方法,您可以将 , 替换为 .并将其传递给
Val()。当然,如果你得到 12,345.67,那你就完蛋了。
标签: vb6 localization type-conversion