当前位置:  开发笔记 > 后端 > 正文

本地货币字符串转换

如何解决《本地货币字符串转换》经验,为你挑选了1个好方法。

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

该数据库存储在英格兰,并使用格式£1000.00作为货币,但信息正在波兰本地收集,其中1000,00是格式.

我的问题是,在VB6中有一个函数,它采用本地格式的货币字符串并转换为另一个,或者我只需要解析字符串并替换,或者.?

顺便说一句,我看过CCur,但不确定这是否能满足我的需求.



1> Joel Spolsky..:

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

边栏:通常,数据库设置为使用十进制数据类型(在某些DB中也称为money)或浮点数(也称为double)来存储金额.

不同之处在于,当它以十进制形式存储时,某些数字(如0.01)会被精确表示,而在数中,这些数字只能近似存储,从而导致舍入误差.

数据库似乎存储了数字,"£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")

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

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

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有