| 

.NET C# Java Javascript Exception

3
Wie wandele ich 5,77777 in 5.77777 um? Oder das Komma gegen einen Punkt austauschen in C#
In meinem Cenario MVC wird den Longitude-Wert z.B. 47.6667342842 (.) in der SQL-Datenbank als Float 47,6667342842 (,) abgespeichert.

Wenn ich den Wert zum editieren wieder anzeigen will wird er als ,-Wert angezeigt.
in der Form.ascx Datei habe ich versucht direct zu convertieren
<td><%: Html.TextBoxFor(m => m.Longitude,  Convert.ToString(Model.Longitude, CultureInfo.InvariantCulture)) %>
oder über ViedData im Controller
var lati = Convert.ToString(tbl87Geographic.Longitude).Replace(",", ".");        
ViewData["latiConv"] = lati;
<td><%: Html.TextBoxFor(m => m.Longitude, ViewData["latiConv"] %>
Aber wenn auch der Wert in lati noch mit Punkt ist. wird er im View wieder mit Komma angezeigt. Also die Umwandlung erfolgt wieder in Html.TextBoxFor
01.03.2011
Terppe 141 5
6 Antworten
1
String Format for Double wenn es für dotnet sein soll.

Hier ein Beispiel
double d = 5.346;
CultureInfo cultureInfo = CultureInfo.GetCultureInfo("de-CH");
string s = string.Format(cultureInfo, "{0:0.00}", d);
Console.WriteLine(s);

Das Dezimaltrennzeichen erhälst du je nach Ländereinstellung. Alternativ kann es auch mit .Replace(".",",") ersetzt werden (siehe weitere Antworten hier).
Streiche bitte den letzten Satz.
Je nach Eingabegebietsschema ist das Dezimaltrennzeichen ein Punkt oder ein Komma. Daher ist ein .Replace(".",",") oder .Replace(",",".") falsch. So solltest du mit CultureInfo arbeiten.
Wenn .Replace(), dann muss das Dezimaltrennzeichen des Systems abgefragt werden.
01.03.2011
Jürgen Luhr 6,9k 1 8
Dachte auch dass das so geht. Bei mir funktioniert der Ansatz leider nicht ist komischerweise trotzdem ein Komma.
Willi Pasternak 01.03.2011
Das ist abhängig von der Ländereinstellung.
Jürgen Luhr 01.03.2011
Wenn man "das Komma gegen einen Punkt austauschen" möchte, wird man mit ".Replace(".",",")" nicht weit kommen.
Ekkehard.Horner 01.03.2011
Stimmt. Das war ein Schnellschuss. Außerdem ändere ich meine Antwort, da "Replace" in der Art nicht geeignet ist.
Jürgen Luhr 01.03.2011
1
Hier ist der Link zur MSDN.
Du kannst das dann auch kulturabhängig tun.
double.ToString(...)
01.03.2011
ralf.hientzsch 587 6
1
5.777777F.ToString().Replace(",",".")
01.03.2011
Seppium 21 2
Wenn man "das Komma gegen einen Punkt austauschen" möchte, wird man mit ".Replace(".",",")" nicht weit kommen.
Ekkehard.Horner 01.03.2011
0
Das könnte deine Lösung sein:
Convert.ToString(123).Replace(",", ".");
01.03.2011
DerPunk 793 6
Die Replace Function ist natürlich richig.
In meinem Cenarion MVC wird leider der convertierte Wert wieder zurückgesetzt. Ich werde meine Anfrag noch einmal editieren
Terppe 01.03.2011
0
public static double ToDouble(string value, CultureInfo culture){
if Double.TryParse(value, NumberStyles.AllowDecimalPoint, culture, number)
return number;
else
return 0;
}

//----------------------------------------------------
// Beispiele:
//----------------------------------------------------
string value = "1345,978";
CultureInfo cultureDe = CultureInfo.CreateSpecificCulture("de-DE");
Console.WriteLine(ToDouble(value,cultureDe)); //=> 1345.978

string value = "1345,978";
CultureInfo cultureDe = CultureInfo.CreateSpecificCulture("en-EN");
Console.WriteLine(ToDouble(value,cultureDe)); //=> 0


Die CultureInfo gibt das Format der Eingabe an.
Die NumberStyles geben die erlaubten Optionen an (z.B. AllowCurrencySymbol, AllowDecimalPoint, ...).
01.03.2011
Floyd 11,0k 3 9
0
leider bin ich der Lösung nicht wirlich näher gekommen.
Das Ziel ist ein Double 123,3456789 (in der Datenbank)im Textfeld als 123.3456789 anzuzeigen.

Wenn das Programm im de-DE oder fr-FR Culture läuft erhalte ich immer 123,3456789
Wenn ich aber im en-EN Culture laufen lasse erhalte ich 123.3456789
Der Versuch auf InvariantCulture zu schalten, also ohne eine Culture "" bringt keinen Erfolg
<%: Html.TextBoxFor(m => m.Latitude, Convert.ToString(Model.Latitude, CultureInfo.InvariantCulture))%>

Gibt es denn eine Lösung um nur dies MVC Textfeld auf EN zuschalten, damit es richtig angezeigt wird?
Oder natürlich jede andere Lösung
02.03.2011
Terppe 141 5

Stelle deine Mvc-Frage jetzt!