diff --git a/MarketData/MarketDataLib/Utility/Utility.cs b/MarketData/MarketDataLib/Utility/Utility.cs index 81e9ec4..d0f06af 100755 --- a/MarketData/MarketDataLib/Utility/Utility.cs +++ b/MarketData/MarketDataLib/Utility/Utility.cs @@ -525,13 +525,8 @@ namespace MarketData.Utils { StringBuilder sb = new StringBuilder(); if (double.NaN.Equals(number)) sb.Append("N/A"); - else sb.Append(String.Format("{0:C}", number, new CultureInfo("en-US"))); - return sb.ToString(); - } - - public static String FormatPrice(double price) - { - return FormatCurrency(price, 3); + else sb.Append(String.Format("{0:C}", number)); + return Reformat(sb.ToString(), number) ; } public static String FormatCurrency(double number,int decimals) @@ -540,8 +535,25 @@ namespace MarketData.Utils String currencyFormat="{0:C"+decimals+"}"; if (double.NaN.Equals(number))sb.Append("N/A"); else sb.Append(String.Format(currencyFormat, number)); - return sb.ToString(); + return Reformat(sb.ToString(), number); } + + // This is a workaround for ARM64 architecture where the leading and trailing parens are omitted for negative numbers + private static String Reformat(String str, double number) + { + if (String.IsNullOrEmpty(str)) return str; + if (number < 0.00 && !str.StartsWith("(")) + { + return "(" + str + ")"; + } + return str; + } + + public static String FormatPrice(double price) + { + return FormatCurrency(price, 3); + } + public static String FormatPercent(double number) { StringBuilder sb = new StringBuilder(); diff --git a/eNavigator/MarketDataLib/Utility/Utility.cs b/eNavigator/MarketDataLib/Utility/Utility.cs index 453e4d9..a32c8e7 100755 --- a/eNavigator/MarketDataLib/Utility/Utility.cs +++ b/eNavigator/MarketDataLib/Utility/Utility.cs @@ -290,19 +290,32 @@ namespace MarketData.Utils } public static String FormatCurrency(double number) { - StringBuilder sb=new StringBuilder(); - if (double.NaN.Equals(number))sb.Append("N/A"); + StringBuilder sb = new StringBuilder(); + if (double.NaN.Equals(number)) sb.Append("N/A"); else sb.Append(String.Format("{0:C}", number)); - return sb.ToString(); + return Reformat(sb.ToString(), number) ; } + public static String FormatCurrency(double number,int decimals) { StringBuilder sb=new StringBuilder(); String currencyFormat="{0:C"+decimals+"}"; if (double.NaN.Equals(number))sb.Append("N/A"); else sb.Append(String.Format(currencyFormat, number)); - return sb.ToString(); + return Reformat(sb.ToString(), number); } + + // This is a workaround for ARM64 architecture where the leading and trailing parens are omitted for negative numbers + private static String Reformat(String str, double number) + { + if (String.IsNullOrEmpty(str)) return str; + if (number < 0.00 && !str.StartsWith("(")) + { + return "(" + str + ")"; + } + return str; + } + public static String FormatPercent(double number) { StringBuilder sb = new StringBuilder();