diff --git a/SabreTools.Text.Extensions.Test/NumberHelperTests.cs b/SabreTools.Text.Extensions.Test/NumberHelperTests.cs index 74f3b72..a1b97bc 100644 --- a/SabreTools.Text.Extensions.Test/NumberHelperTests.cs +++ b/SabreTools.Text.Extensions.Test/NumberHelperTests.cs @@ -1,4 +1,5 @@ using System; +using System.Globalization; using Xunit; namespace SabreTools.Text.Extensions.Test @@ -31,6 +32,17 @@ namespace SabreTools.Text.Extensions.Test Assert.True(variance < 0.1f); } + [Theory] + [InlineData("en-US")] + [InlineData("de-DE")] + [InlineData("fr-FR")] + public void ConvertToDoubleTest_CurrentCultureIgnored(string culture) + { + CultureInfo.CurrentCulture = new CultureInfo(culture); + double? actual = NumberHelper.ConvertToDouble("59.940000"); + Assert.Equal(59.94, actual); + } + #endregion #region ConvertToInt64 diff --git a/SabreTools.Text.Extensions/NumberHelper.cs b/SabreTools.Text.Extensions/NumberHelper.cs index 6f69741..a3742cf 100644 --- a/SabreTools.Text.Extensions/NumberHelper.cs +++ b/SabreTools.Text.Extensions/NumberHelper.cs @@ -1,4 +1,5 @@ using System; +using System.Globalization; namespace SabreTools.Text.Extensions { @@ -47,7 +48,7 @@ namespace SabreTools.Text.Extensions if (string.IsNullOrEmpty(numeric)) return null; - if (!double.TryParse(numeric, out double doubleValue)) + if (!double.TryParse(numeric, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out double doubleValue)) return null; return doubleValue;