нужно игнорировать десятичные разряды из строки, если десятичные разряды .00 - PullRequest
0 голосов
/ 18 сентября 2018

Привет всем, кого я хочу игнорировать это .00 из номера строки.Ниже приведен мой пример ввода и нужен вывод.Я пробовал этот код.String.Format ("{0: n}", Amount) но проблема в этом коде.

Если значение равно 10000. 00.
Мой код преобразует его в "10, 000.00"
, но мне нужно только "10, 000".

Пожалуйста, помогите мне решить проблему.

Дополнительные примеры:

10000.00  -> "10,000"
10000.12  -> "10,000.12"
10000.1   -> "10,000.10"

Ответы [ 4 ]

0 голосов
/ 18 сентября 2018

Итак, у вас есть какие-то деньги : мы выводим центов тогда и только тогда, когда они у нас есть:

  10000.00  -> 10,000    (no cents; exactly 10000)
  10000.003 -> 10,000    (no cents; still exactly 10000) 
  10000.1   -> 10,000.10 (ten cents)
  10000.12  -> 10,000.12 (twelve cents)
  10000.123 -> 10,000.12 (still twelve cents)

Последние три случая, которые мы можем отформатироватькак "#,0.00", и первые два будут правильными со строкой формата "#,0".Единственная проблема заключается в различении случаев.

Мы можем попробовать использовать Math.Round() для этого

  string result = d.ToString(Math.Round(d) != Math.Round(d, 2) ? "#,0.00" : "#,0");

Демонстрация:

decimal[] tests = new decimal[] {
  10000.00m,
  10000.003m,
  10000.10m,
  10000.12m,
  10000.123m,
};

string report = string.Join(Environment.NewLine, tests
  .Select(d => 
     $"{d,-10} -> {d.ToString(Math.Round(d) != Math.Round(d, 2) ? "#,0.00" : "#,0")}"));

Console.Write(report);

Результат:

10000.00   -> 10,000
10000.003  -> 10,000
10000.10   -> 10,000.10
10000.12   -> 10,000.12
10000.123  -> 10,000.12
0 голосов
/ 18 сентября 2018

Преобразование в целое число удалит ваши десятичные разряды, а форматирование N2 будет использоваться в качестве разделителя тысяч.

([int]10000.00).ToString("N");
0 голосов
/ 18 сентября 2018

Вы можете просто добавить другое расширение

        var Amount = "1000.00";
        var r = String.Format("{0: n}", Amount).Replace(".00", "");
0 голосов
/ 18 сентября 2018

Используйте этот формат String.Format ("{0:0.##}", Amount)

Или с разделителем тысяч: "{0:#,0.##}" от @Dmitry Bychenko

...