65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 .NET 代码与传统 VB6 代码格式化货币

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.91/5 (3投票s)

2009年3月31日

CPOL

2分钟阅读

viewsIcon

29374

将字符串格式化为货币,而无需依赖 VB6。

list-a.gif

介绍 

本文讨论了如何按照 $1,000.00 的标准美国货币格式格式化函数中提供的 string,而不使用 Visual Basic 命名空间 (即 VB6 或Visual Basic.dll)。

速度非常重要。将提供基准测试以显示 VB6 提供的转换函数 FormatCurrency 与不使用任何 VB6 函数创建的函数之间的差异。

此项目旨在进一步将 VB.NET 程序员从 VB6 的传统中移除,并帮助他们更好地理解 .NET 的实现。

使用代码 

A. Visual Basic (VB6) 传统函数用法

// Private Function DoConvert(ByVal Str as String, ByVal DecPlc as Integer) as String
//      Return Microsoft.VisualBasic.FormatCurrency(Str,DecPlc)
// End Function 

B. VB.NET 函数

// Private Function DoConvert(ByVal Str as String, ByVal DecPlc as Integer) as String
//      Return String.Format("{0:c" & DecPlc & "}",CDec(Str))
// End Function  

基准测试

VB6 函数(传统)

使用“5”作为 string,保留 2 位小数,进行 10,000,000 次测试。

  1. 测试 # 1:11 秒 62 毫秒
  2. 测试 # 2:11 秒 28 毫秒
  3. 测试 # 3:11 秒 108 毫秒
使用“500.005”作为 string,保留 2 位小数,进行 10,000,000 次测试。
  1. 测试 # 1:11 秒 673 毫秒
  2. 测试 # 2:11 秒 113 毫秒
  3. 测试 # 3:11 秒 397 毫秒

VB.NET 函数

使用“5”作为 string,保留 2 位小数,进行 10,000,000 次测试。

  1. 测试 # 1:11 秒 68 毫秒
  2. 测试 # 2:11 秒 37 毫秒
  3. 测试 # 3:11 秒 30 毫秒

使用“5”作为 string,保留 2 位小数,进行 10,000,000 次测试。

  1. 测试 # 1:13 秒 456 毫秒
  2. 测试 # 2:12 秒 449 毫秒
  3. 测试 # 3:12 秒 827 毫秒

已知问题 

VB6 函数和 .NET 函数都有一个共同的问题。如果传递的值无法转换为十进制数字,该函数将失败。为了防止这种情况发生,必须使用某种形式的“try/catch”语句,或者在将其传递给转换函数之前验证信息。

顺便说一句,与用于验证信息的其他方法相比,try/catch 语句非常慢。虽然这是一个捕获错误/异常并将其报告到屏幕的好方法,但它仍然需要花费更多的时间和资源来做一些可以在一开始就准备好的事情。

结论

随着 .NET 每天不断发展,学习更新的功能和编码技术或程序以减少内存使用和提高速度非常重要。在上面查看基准测试时,我们看到 .NET 实现的速度在 10,000,000 次尝试中略微慢一些。我们必须理解,我们的程序不会占用太多内存,因为它没有拖累 visualbasic.dll

历史

  • 2009 年 3 月 31 日:首次发布
© . All rights reserved.