I have this code that always return zero whenever i passed 1,000,00 in
a da-DK culture or en-US culture. It works with amount less that 1000
like 99,99. but always returns 0 when greater than or equal to 1000.
Decimal separator is ",". I suspect its because the decimal and
thousand separator are the same.
Thread.CurrentThread.CurrentCulture = new
CultureInfo(Thread.CurrentThread.CurrentCulture.Na me);
Thread.CurrentThread.CurrentCulture.NumberFormat.C urrencySymbol = "";
Thread.CurrentThread.CurrentCulture.NumberFormat.C urrencyDecimalSeparator
= ",";
Thread.CurrentThread.CurrentCulture.NumberFormat.C urrencyGroupSeparator
= ",";
Thread.CurrentThread.CurrentCulture.NumberFormat.C urrencyDecimalDigits
= 2;
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(Thread.CurrentThread.CurrentUICulture. Name);
Thread.CurrentThread.CurrentUICulture.NumberFormat .CurrencySymbol =
"";
Thread.CurrentThread.CurrentUICulture.NumberFormat .CurrencyDecimalSeparator
= ",";
Thread.CurrentThread.CurrentUICulture.NumberFormat .CurrencyGroupSeparator
= ",";
Thread.CurrentThread.CurrentUICulture.NumberFormat .CurrencyDecimalDigits
= 2;
/// <summary>
/// Try parse string input into decimal value.
/// </summary>
/// <param name="inputValue">The input value.</param>
/// <param name="valueWhenNull">The value when null or failed to
parse.</param>
/// <returns></returns>
public static decimal TryParseDecimal(string inputValue, string
valueWhenNull) {
inputValue = inputValue ?? valueWhenNull;
decimal returnedValue = 0;
decimal.TryParse(inputValue, NumberStyles.Currency,
NumberFormatInfo.CurrentInfo, out returnedValue);
return returnedValue;
}