2013-02-19 5 views
6

Zasadniczo zdaję sobie sprawę, że moja aplikacja używa przecinków zamiast liczb dziesiętnych, i NIGDY nie chcę na to pozwolić. Czy ktoś wie, jak mogę to poprawić? Nie mogę znaleźć jednej rzeczy przez google, która ma wymuszać ułamki dziesiętne, chodzi tylko o wymuszanie przecinków.C# - Wymuś String.Format do używania liczb dziesiętnych i NIGDY przecinek

  return String.Format("{0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f, {12}f, {13}f, {14}f, {15}f", M.M11, M.M12, M.M13, M.M14, M.M21, M.M22, M.M23, M.M24, M.M31, M.M32, M.M33, M.M34, M.OffsetX, M.OffsetY, M.OffsetZ, M.M44); 
+0

Czy możesz podać przykład użycia przecinków i używania liczb dziesiętnych? –

+0

Tak jak w przypadku, gdy ktoś w Wielkiej Brytanii zacznie moją aplikację, 1.5654654 będzie 1,5654654 – Geesu

+1

Jeśli tego nie dopuścisz, będzie to dezorientować użytkowników z Wielkiej Brytanii. Jesteś pewien, że to będzie w porządku? –

Odpowiedz

9

Można korzystać z innych przeciążeniem:

return String.Format(
    CultureInfo.InvariantCulture // <<== That's the magic 
, "{0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f, {12}f, {13}f, {14}f, {15}f" 
, M.M11, M.M12, M.M13, M.M14, M.M21, M.M22, M.M23, M.M24, M.M31, M.M32, M.M33, M.M34, M.OffsetX, M.OffsetY, M.OffsetZ, M.M44 
); 

Ten sposób powołania zapewnia, że ​​niezmienna kultura jest przekazywana jako dostawca formatu do String.Format, zapewniając, że dostaniesz kropki dla liczb, dolary dla symboli walut, angielski dla nazw miesięcy i dni, i tak dalej.

+0

Myślę, że to chyba bardziej poprawne niż moja odpowiedź. –

+0

Kocham Cię, dzięki! – Geesu

1

spróbuj ustawić kultury do amerykańskiego angielskiego dla funkcji string.Format:

String.Format(new CultureInfo("en-US"), "{0}f, {1}f, {2}f", etc)