[Gambas-user] Converting strings to numbers with localization issues

Ron ron at ...1740...
Mon Aug 23 11:46:57 CEST 2010


  In my project I have several temp values in the form of 31.72 C

They are stored as string and I convert them with Val(sValue)

My project is translatable, default language is en_US.UTF-8

If I change System.Language, Val doesn't know how to convert the value 
correctly (or it does it correctly, but I have to change my code)

Anyone had this problem and knows how to prevent the system from leaving 
out point or comma's or the complete value?

Example project with output:

' Gambas module file

PUBLIC SUB Main()

   DIM sValue AS String = "31,72"

   PRINT "Original Value -> " & sValue

   PRINT System.Language & " -> ";
   PRINT Val(sValue)

   System.Language = "nl_NL.UTF-8"
   PRINT System.Language & " -> ";
   PRINT Val(sValue)

   System.Language = "de_DE.UTF-8"
   PRINT System.Language & " -> ";
   PRINT Val(sValue)

   sValue = "31.72"
   PRINT "\nOriginal Value -> " & sValue

   PRINT System.Language & " -> ";
   PRINT Val(sValue)

   System.Language = "nl_NL.UTF-8"
   PRINT System.Language & " -> ";
   PRINT Val(sValue)

   System.Language = "de_DE.UTF-8"
   PRINT System.Language & " -> ";
   PRINT Val(sValue)

END

OUTPUT IS:

Original Value -> 31,72
en_US.UTF-8 -> 3172
nl_NL.UTF-8 -> 31,72
de_DE.UTF-8 -> 31,72

Original Value -> 31.72
de_DE.UTF-8 -> 3172
nl_NL.UTF-8 ->
de_DE.UTF-8 -> 3172

So if I store it with . or , it's false interpreted by at least one of 
the languages...
I do not have the same values, I also store energy usage and other 
values in the form of 41.322 Watts, so the decimal point is not always at 2

I remember this type of discussion regarding currency, how was it solved?

Please any input is welcome.

Gambas2, gb.qt, Ubuntu 10.04

Regards,
Ron_2nd.





More information about the User mailing list