Dies ist eine sehr unangenehme Art und Weise tun:
private static string FormatIntString(string input)
{
if (input.IndexOf('.') != input.LastIndexOf('.'))
{
if (input.Contains(","))
{
//this case-> Ava.bytes -> 147.258.369,5 =>147258369.5
return DoFormat(input.Replace(".", "").Replace(',', '.'));
}
else
{
// this case-> Ava.bytes -> 147.258.369 => 147258369.0
return DoFormat(input.Replace(".", ""));
}
}
else
{
if (input.Contains('.'))
{
//this case -> Ava.bytes -> 147,258,369.5 =>147258369.5
return DoFormat(input.Replace(",", ""));
}
else
{
//this case -> Ava.bytes -> 147,258,369 => 147258369.0
return DoFormat(input.Replace(",", ""));
}
}
}
public static string DoFormat(string myNumber)
{
var s = string.Format("{0:0.00}", myNumber);
if (s[s.Length-2] != '.')
return (myNumber + ".0");
else
return s;
}
Beachten Sie, dass dies nur funktioniert, für Saiten mit mindestens zwei ‚‘ oder ' . "
Der vereinfachte Code:
private static string FormatIntString(string input)
{
if (input.IndexOf('.') != input.LastIndexOf('.'))
if (input.Contains(","))
return DoFormat(input.Replace(".", "").Replace(',', '.'));
else
return DoFormat(input.Replace(".", ""));
else
if (input.Contains('.'))
return DoFormat(input.Replace(",", ""));
else
return DoFormat(input.Replace(",", ""));
}
public static string DoFormat(string myNumber)
{
var s = string.Format("{0:0.00}", myNumber);
if (s[s.Length - 2] != '.')
return (myNumber + ".0");
else
return s;
}
Ist das Dezimalsystem immer nur auf den zehnten? Denn was wäre, wenn Sie 147.258 und 147.258 hätten ... Sie hätten nicht genug Informationen, um zu wissen, ob Sie 147.258 oder 147.258.000 – Ryan
gemeint haben. Was ist '123,456'? – SimpleVar
Sind diese Daten fester Breite, wo Sie sich darauf verlassen können, dass die Dezimalstelle (falls vorhanden) immer am selben Ort ist? – DVK