From b24689484580b1ccc6b87480150dd57fbb0728c4 Mon Sep 17 00:00:00 2001 From: "Dr.Rx" Date: Fri, 24 May 2019 12:10:19 -0400 Subject: [PATCH] Fix converters output / rouding --- .../CalcManager/UnitConversionManager.cs | 18 +++++++++--------- .../ViewModels/UnitConverterViewModel.cs | 7 ++++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Calculator.Shared/CalcManager/UnitConversionManager.cs b/src/Calculator.Shared/CalcManager/UnitConversionManager.cs index 6aeaec41..0fff7919 100644 --- a/src/Calculator.Shared/CalcManager/UnitConversionManager.cs +++ b/src/Calculator.Shared/CalcManager/UnitConversionManager.cs @@ -618,8 +618,8 @@ namespace UnitConversionManager CalculatorList tokenList = StringToVector(w, ';'); Debug.Assert(tokenList.Size() == EXPECTEDSERIALIZEDCONVERSIONDATATOKENCOUNT); ConversionData serializedConversionData = new ConversionData(); - serializedConversionData.ratio = System.Convert.ToDouble(Unquote(tokenList[0])); - serializedConversionData.offset = System.Convert.ToDouble(Unquote(tokenList[1])); + serializedConversionData.ratio = System.Convert.ToDouble(Unquote(tokenList[0]), CultureInfo.InvariantCulture); + serializedConversionData.offset = System.Convert.ToDouble(Unquote(tokenList[1]), CultureInfo.InvariantCulture); serializedConversionData.offsetFirst = (tokenList[2].CompareTo("1") == 0); return serializedConversionData; } @@ -1140,7 +1140,7 @@ namespace UnitConversionManager { if (cur.Key != m_fromType && cur.Key != m_toType) { - double convertedValue = Convert(System.Convert.ToDouble(m_currentDisplay), cur.Value); + double convertedValue = Convert(System.Convert.ToDouble(m_currentDisplay, CultureInfo.InvariantCulture), cur.Value); SuggestedValueIntermediate newEntry; newEntry.magnitude = Math.Log10(convertedValue); newEntry.value = convertedValue; @@ -1180,7 +1180,7 @@ namespace UnitConversionManager { roundedString = RoundSignificant(entry.value, 0); } - if (System.Convert.ToDouble(roundedString) != 0.0 || m_currentCategory.supportsNegative) + if (System.Convert.ToDouble(roundedString, CultureInfo.InvariantCulture) != 0.0 || m_currentCategory.supportsNegative) { TrimString(ref roundedString); returnVector.PushBack(Tuple.Create(roundedString, entry.type)); @@ -1220,7 +1220,7 @@ namespace UnitConversionManager } // How to work out which is the best whimsical value to add to the vector? - if (System.Convert.ToDouble(roundedString) != 0.0) + if (System.Convert.ToDouble(roundedString, CultureInfo.InvariantCulture) != 0.0) { TrimString(ref roundedString); whimsicalReturnVector.PushBack(Tuple.Create(roundedString, entry.type)); @@ -1383,7 +1383,7 @@ namespace UnitConversionManager } Dictionary conversionTable = m_ratioMap[m_fromType]; - double returnValue = System.Convert.ToDouble(m_currentDisplay); + double returnValue = System.Convert.ToDouble(m_currentDisplay, CultureInfo.InvariantCulture); if (conversionTable[m_toType].ratio == 1.0 && conversionTable[m_toType].offset == 0.0) { m_returnDisplay = m_currentDisplay; @@ -1407,11 +1407,11 @@ namespace UnitConversionManager if (numPreDecimal > MAXIMUMDIGITSALLOWED || (returnValue != 0 && Math.Abs(returnValue) < MINIMUMDECIMALALLOWED)) { - m_returnDisplay = returnValue.ToString("e"); + m_returnDisplay = returnValue.ToString("e", CultureInfo.InvariantCulture); } else { - returnValue = System.Convert.ToDouble(m_returnDisplay); + returnValue = System.Convert.ToDouble(m_returnDisplay, CultureInfo.InvariantCulture); string returnString; if (m_currentDisplay.size() <= OPTIMALDIGITSALLOWED && Math.Abs(returnValue) >= OPTIMALDECIMALALLOWED) { @@ -1451,7 +1451,7 @@ namespace UnitConversionManager /// int number of significant digits to round to string RoundSignificant(double num, int numSignificant) { - return num.ToString($"F{numSignificant}"); + return num.ToString($"F{numSignificant}", CultureInfo.InvariantCulture); } void UpdateCurrencySymbols() diff --git a/src/Calculator.Shared/ViewModels/UnitConverterViewModel.cs b/src/Calculator.Shared/ViewModels/UnitConverterViewModel.cs index fd6ebee9..19a40527 100644 --- a/src/Calculator.Shared/ViewModels/UnitConverterViewModel.cs +++ b/src/Calculator.Shared/ViewModels/UnitConverterViewModel.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; +using System.Globalization; using System.IO; using System.Linq; using System.Numerics; @@ -1089,9 +1090,9 @@ namespace CalculatorApp.ViewModel if (IsCurrencyCurrentCategory) { // TODO UNO: - // string currencyResult = m_currencyFormatter.Format(System.Convert.ToDouble(stringToLocalize)); + // string currencyResult = m_currencyFormatter.Format(System.Convert.ToDouble(stringToLocalize, CultureInfo.InvariantCulture)); // string currencyCode = m_currencyFormatter.Currency; - string currencyResult = System.Convert.ToDouble(stringToLocalize).ToString(CultureInfo.CurrentCulture); + string currencyResult = System.Convert.ToDouble(stringToLocalize, CultureInfo.InvariantCulture).ToString(CultureInfo.CurrentCulture); string currencyCode = "TODO UNO"; // CurrencyFormatter always includes LangCode or Symbol. Make it include LangCode @@ -1112,7 +1113,7 @@ namespace CalculatorApp.ViewModel // Then use the decimalFormatter to reformat the double to Platform String // TODO UNO //result = m_decimalFormatter.Format(System.Convert.ToDouble(stringToLocalize)); - result = System.Convert.ToDouble(stringToLocalize).ToString(CultureInfo.CurrentCulture); + result = System.Convert.ToDouble(stringToLocalize, CultureInfo.InvariantCulture).ToString(CultureInfo.CurrentCulture); } if (hasDecimal)