Форматирование строк, что я делаю не так? - PullRequest
1 голос
/ 23 января 2012

У меня есть следующий код:

double f = (1500 / 3000);
MessageBox.Show(string.Format("{0:F2}",f));

Я ожидаю получить 0.50 в качестве результата, но я получу 0.00. Что я делаю неправильно? Пожалуйста, помогите мне понять, как работает форматирование.

Ответы [ 5 ]

11 голосов
/ 23 января 2012

Это целочисленное деление.Как минимум одно из ваших значений должно быть двойным (нецелым).

1500 / 3000 = 0
1500 / 3000.0 = 0.50
3 голосов
/ 23 января 2012

Вы делите целые числа.

Изменить на

double f  = (Convert.ToDouble(1500)/Convert.ToDouble(300);
MessageBox.Show(string.Format("{0:F2}",f));
2 голосов
/ 23 января 2012

попробуй double f = (1500.0 / 3000.0);?

1 голос
/ 23 января 2012

Проблема здесь в том, что значение double установлено на 0. Вы делаете целочисленное деление, которое обрезает результат до 0, а затем присваивает его двойному. Вам нужно перейти на деление с плавающей запятой

double f = (1500d / 3000);
1 голос
/ 23 января 2012

Вы должны использовать

double f = (1500d / 3000d);

Если вы не используете "d", числа должны быть целыми, поэтому 1500/3000 равно нулю!
Почти одно из чисел, которые выиспользование должно быть удвоено или приведено к удвоению перед делением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...