I have a simple use case where I am using a system with German language set as system locale (regional format as German as well as current system locale as German).
e.g.
string sourceValue = "0,123";
string target_invariant = sourceValue.ToString(CultureInfo.InvariantCulture);
string targetValue = sourceValue.ToString();
Console.WriteLine(target_invariant); // shows 0,123
Console.WriteLine(targetValue); // 0,123
I would have expected that using InvariantCulture with ToString would produce a culture neutral format such as "0.123" which it does not!!

Instead of converting string into another string with
InvariantCulturewon't help you to convert decimal value with.,You need to parse given
sourceValueto decimal with german culture,Now you can print with
.usingCultureInfo.InvariantCulture,Try online : .Net Fiddle