Использование CultureInfo для замены символа USD на - - PullRequest
1 голос
/ 02 октября 2019

В настоящее время я использую этот код для удаления US symbol и отображения числа как минус

Код, который я использую::

public strNegative = "-";

string Result = TrnAmount
  .ToString("C3", new CultureInfo("en-US"))
  .Replace("$", strNegative);

Однако результат отображается в скобках :

Результат = "(-5)"

Когда требуется форматis

Результат = "-5"

Ответы [ 2 ]

4 голосов
/ 02 октября 2019

Добро пожаловать. Чтобы получить отрицательное число, просто умножьте число на -1. Затем используйте N3 в качестве формата строки , если вы хотите получить общий номер, а не формат валюты.

float TrnAmount = 2.5684155f;
string result = (-1 * TrnAmount).ToString("N3");
Console.WriteLine(result); //This will give you -2.568 as a result
1 голос
/ 02 октября 2019

Технически, вы можете создать свой собственный CultureInfo, например,

  // Same as US
  CultureInfo myUSCulture = new CultureInfo("en-US", true);

  // Except dollar sign removed
  myUSCulture.NumberFormat.CurrencySymbol = "";
  // and negative pattern changed: "-value" instead of "(value)"
  myUSCulture.NumberFormat.CurrencyNegativePattern = 1;

Затем использовать его:

  decimal TrnAmount = -123456789.987M;

  Console.WriteLine(TrnAmount.ToString("C3", myUSCulture)); // exactly 3 digits after .
  Console.WriteLine(TrnAmount.ToString("C2", myUSCulture)); 
  Console.WriteLine(TrnAmount.ToString("C0", myUSCulture)); // no floating point

Результат:

  -123,456,789.987
  -123,456,789.99  // rounded
  -123,456,790     // rounded
...