Visual basic handle decimal comma

2020-02-10 17:58发布

问题:

I'm trying to save variables into text files and the Czech typographic rules drives me crazy. The program I'm tuning is dedicated to work on Czech localized computers where decimal comma is used but the VB is working with normal, standard decimal dot.

When loading files "US" decimals are loaded correctly and showed as Czech decimals. In TextBoxes "Czech" decimals are required. My problem is that program generates Czech decimals and require the "US" ones.

How can I force VB program to read comma as decimal sign instead of delimiter or how to export data with dots instead of commas?

Yes I can load 123,456 as a=123 and b=456 and then return value as a + b/1000 but is there more elegant solution?

回答1:

Your trouble might be due to use of the Val function; that isn't international. The help text recommends the use of CDbl when converting from strings to numbers.



回答2:

Pick the right function.

  • Val, Str will always use US settings (dot as decimal)
  • CDbl, Format will take account of the regional settings.

It's all in the manual section on international programming.



回答3:

Thanks for your advices, I'm not sure if I did something wrong, but I've obtained only errors (ie. type mismatch) or "Czech" decimal comma.

I've tried 'Got slapped? Slap him harder!' aproach with this code:

Dim PpP As String, SaveFile As Integer

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

edit:

something means trying those functions at the output, not at the input. (like trying Double as String parameter).

This code:

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

works aswell.



回答4:

Try,

Format$(CDbl(Text1.Text), "#,##0.00")