mvc3 / razor String.Format ("{0: c}", totalprice) не возвращает десятичных или числовых значений после него - PullRequest
2 голосов
/ 30 января 2012

Может быть, свежий набор глаз может помочь.Я часами пробовал разные вещи, и это был единственный, который дал близкий результат к тому, что я хочу.

Таблица:

  • Поле цены установлено как money со значениями, такими как 3.99, 4.99, 17.99

Код:

var totalprice = (int)db.QueryValue(@"SELECT SUM(CoverPrice) FROM Comics WHERE Approved='1' AND ArcId = @0", aId);

Назовите его с помощью:

@String.Format("{0:c}", totalprice)

Какойвыходные данные:

$26

Но я хочу, чтобы он распечатывал с десятичным числом и двумя числами после него, которые должны быть 26.97.Что я пропустил ???

Ответы [ 2 ]

4 голосов
/ 30 января 2012

Это происходит потому, что вы преобразовали свою переменную totalprice в int.

Измените

var totalprice = (int)db.QueryValue(@"SELECT SUM(CoverPrice) FROM Comics WHERE Approved='1' AND ArcId = @0", aId);

на

var totalprice = (decimal)db.QueryValue(@"SELECT SUM(CoverPrice) FROM Comics WHERE Approved='1' AND ArcId = @0", aId);
2 голосов
/ 30 января 2012

Когда вы разыгрываете сумму как int, вы теряете центы, вам нужно разыграть ее как десятичную:

var totalprice = (decimal)db.QueryValue(@"SELECT SUM(CoverPrice) FROM Comics WHERE Approved='1' AND ArcId = @0", aId);
...