Hi,

You should use myDouble.ToString(CultureInfo.InvariantCulture) instead of
assuming a specific decimal separator and replacing that to decimal point.

Kornél

----- Original Message -----
From: "xavier de Blas" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Saturday, February 11, 2006 11:15 AM
Subject: Re: [Mono-list] Numbers with ","


Hello Paulo

When I INSERT in SQL i always insert with '.' as decimal point
separator, i do it like this:

Util.ConvertToPoint(myDouble)


On util class i have:


public static string ConvertToPoint (double myDouble) {
   StringBuilder myStringBuilder = new StringBuilder(myDouble.ToString());
   myStringBuilder.Replace(",", ".");
   return myStringBuilder.ToString();
}

//sometimes i do it as a string
public static string ConvertToPoint (string myString) {
   StringBuilder myStringBuilder = new StringBuilder(myString);
   myStringBuilder.Replace(",", ".");
   return myStringBuilder.ToString();
}


When I SELECT i do:

while(reader.Read()) {
 myArray.Add (reader[0].ToString() + ":" +
 Util.ChangeDecimalSeparator(reader[1].ToString()) + ":" +
 (...)
}

on Util class i have:

//used for load from the database all numbers with correct decimal
separator (locale defined)
public static string ChangeDecimalSeparator(string myString) {
 if(myString == "") {
   return "0";
 }
 System.Globalization.NumberFormatInfo localeInfo = new
System.Globalization.NumberFormatInfo();
 localeInfo = System.Globalization.NumberFormatInfo.CurrentInfo;

 StringBuilder myStringBuilder = new StringBuilder(myString);
 if(localeInfo.NumberDecimalSeparator != ".") {
   myStringBuilder.Replace(".", localeInfo.NumberDecimalSeparator);
 }
 return myStringBuilder.ToString();
}


This are pieces of code of Chronojump, files:
http://cvs.gnome.org/viewcvs/chronojump/src/sqlite/jump.cs?rev=1.15&view=log
http://cvs.gnome.org/viewcvs/chronojump/src/util.cs?rev=1.19&view=log

http://gnome.org/projects/chronojump


A bondade



On ds, 2006-02-11 at 00:56 +0000, Paulo Augusto wrote:
In portuguese (in fact, every language i know except english), numbers
are separated by a "," comma, instead of by a "." dot.

So, when my mono program needs a number from an Entry():
Convert.ToSingle (string);
and then i want to pass that number to MySql through an sql string:
float.ToString();
results in a string that has a "," which brakes the sql string.

Anyone has any idea on what's the best way to handle this localisation
issue?

I tried working around it with:
string.Replace (char, char);
and
string.Replace (string, string);
to the resulting string but i think both are broken since they do not
work at all.

One would think this issue would be frequent but i do not seem to be
able to find any information at all anywhere about it.
_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list


_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to