【问题标题】:Visual basic handle decimal commaVisual Basic 处理十进制逗号
【发布时间】:2011-06-02 13:35:14
【问题描述】:

我正在尝试将变量保存到文本文件中,捷克的印刷规则让我发疯。 我正在调整的程序专用于在使用十进制逗号但 VB 使用普通标准十进制点的捷克本地化计算机上工作。

加载文件时,“美国”小数会正确加载并显示为捷克小数。在 TextBoxes 中需要“捷克”小数。我的问题是程序生成捷克小数并需要“美国”小数。

如何强制 VB 程序将逗号读取为十进制符号而不是分隔符,或者如何使用点而不是逗号导出数据?

是的,我可以将123,456 加载为a=123b=456,然后将值作为a + b/1000 返回,但有没有更优雅的解决方案?

【问题讨论】:

  • 在几乎任何你能提到的编程语言中,小数都用点表示,而不是逗号。如果您的用户期望逗号,则将其转换为显示和输入目的,但您需要在代码中使用一个点。
  • 希望您没有尝试使用 Input#,它仅用于读取 Write# 写入的数据,它始终使用“通用”格式(在这种情况下,句点为小数点)。
  • Spudley:是的,我知道,但是 windows 使用三个符号:点、逗号和小数分隔符。其中两个看起来一样。在我的情况下,输出分隔符用于操作系统 - 逗号 - 输入分隔符是编程语言原生点。

标签: vb6 internationalization decimal


【解决方案1】:

选择正确的功能。

  • ValStr 将始终使用美国设置(点为十进制)
  • CDblFormat 将考虑区域设置。

这一切都在手册section on international programming

【讨论】:

    【解决方案2】:

    您的问题可能是由于使用了Val 函数;那不是国际的。帮助文本建议在从字符串转换为数字时使用CDbl

    【讨论】:

      【解决方案3】:

      感谢您的建议,我不确定我是否做错了某些事情,但我得到的只是错误(即类型不匹配)或“捷克语”十进制逗号。

      我试过“被打了?用力扇他一巴掌!使用此代码的方法:

      Dim PpP As String, SaveFile As Integer
      
      PpP = Form1.TxtA10.Text & " " & Form1.TxtA11.Text
      PpP = Replace(PpP, ",", ".")
      Print #SaveFile, PpP
      

      编辑:

      something 意味着在输出端尝试这些功能,而不是在输入端。 (例如尝试将 Double 作为字符串参数)。

      这段代码:

      Input #1,TempString
      Form1.TxtA10.Text = CDbl(TempString)
      

      也可以。

      【讨论】:

      • 首先使用Dim f As Single: f = CDbl(Form1.TxtA10.Text)将捷克字符串转换为数字,然后通过PpP = Str(f)将数字转换为美国格式的字符串
      【解决方案4】:

      试试,

      格式$(CDbl(Text1.Text), "#,##0.00")

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多