vb6 - 本地货币字符串转换

标签 vb6 localization internationalization

我正在为在两个位置使用的客户端维护一个应用程序。一个在英国,一个在波兰。

数据库存储在英国并使用 1000.00 英镑的货币格式,但信息是在波兰本地收集的,格式为 1000,00。

我的问题是,在 VB6 中是否有一个函数接受本地格式的货币字符串并将其转换为另一种格式,或者我只需要解析该字符串并替换 , 或 . ?

顺便说一句,我看过 CCur,但不确定它是否能满足我的要求。

最佳答案

数据实际上并未存储为字符串"£1000.00";它以某种数字格式存储。

Sidebar: Usually databases are set up to store money amounts using either the decimal data type (also called money in some DBs), or as a floating point number (also called double).

The difference is that when it's stored as decimal certain numbers like 0.01 are represented exactly whereas in double those numbers can only be stored approximately, causing rounding errors.

数据库似乎将数字存储为"£1000.00",因为某些东西正在格式化它以便显示。在 VB6 中,有一个函数 FormatCurrency,它接受一个像 1000 这样的数字并返回一个像 "£1000.00" 这样的字符串。

您会注意到 FormatCurrency 函数没有指定要使用的货币类型的参数。这是因为它与 VB 中所有其他特定于区域设置的函数一起从系统的当前区域设置(从 Windows 控制面板)计算出货币。

这意味着在我的系统上,

Debug.Print FormatCurrency(1000)

将打印 $1,000.00,但如果我在设置为英国区域设置的 Windows 计算机上运行相同的程序,它可能会打印 £1,000.00,当然,是完全不同的东西。

同样,您有一些代码,在某个地方,我不知道是在波兰的什么地方,它似乎负责解析用户的字符串并将其转换为数字。如果该代码在 Visual Basic 中,同样,它依赖于控制面板来决定是否使用“.”。或“,”是千位分隔符,无论是“,”还是“。”是小数点。

函数 CDbl 将其参数转换为数字。因此,例如在我在美国的系统上

Debug.Print CDbl("1.200")

产生数字一点二,在控制面板设置为欧洲格式的系统上,它会产生数字一千、二百。

问题可能是有人坐在计算机上,区域控制面板设置为使用“。”作为小数点分隔符,但他们输入的是“,”作为小数点分隔符。

关于vb6 - 本地货币字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19786/

相关文章:

vb.net - "addressof "VB6 到 VB.NET

postgresql - 如何禁用 Postgresql 消息翻译

android - 将 I18n Iphone 文件转换为 Android

asp.net-mvc - ASP.NET MVC 应用程序中的多种语言?

VB6下载网页源码

c# - 如何从连接到PC的手机发送和读取短信

vb6 - 如何在 VB6 中显示 MDI 表单级别的消息

android - 如何在 android 上读取 string.xml 中的特定键值?

c# - C# 中的多语言支持

c# - IValidatableObject.Validate() 中的本地化