Не верно считает (Баг или мои кривые руки?)

Olegazzz

Client
Регистрация
09.01.2014
Сообщения
16
Благодарностей
1
Баллы
3
upload_2017-1-10_0-32-2.png



Записал в С# формулу, но она не правильно считает:
Код:
  float floatProcent = 15/4;
   project.SendInfoToLog("Результат:" + floatProcent);
Должно быть 15/4 = 3,75, а выдает 3. Почему так?
 

Вложения

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 311
Благодарностей
1 191
Баллы
113
Все потому что для float числа записываются через букву F:
Код:
float abs = 15F / 4F;                  //3,75
 
  • Спасибо
Реакции: Olegazzz

Olegazzz

Client
Регистрация
09.01.2014
Сообщения
16
Благодарностей
1
Баллы
3

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 130
Баллы
113
Все потому что для float числа записываются через букву F
Не обязательно!
C#:
float a = 15;
float b = 4;
float res = a / b;
project.SendInfoToLog("Результат: " + res);
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 311
Благодарностей
1 191
Баллы
113
Не обязательно!
C#:
float a = 15;
float b = 4;
float res = a / b;
project.SendInfoToLog("Результат: " + res);
Изначально числа 15 и 4 являются все равно int. Чтобы их записать сразу как float и применяют букву F. А в основе твоего кода лежит неявное приведение типов, которое можно опустить при написании кода:
C#:
float a = (float)15;
float b = (float)4;
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 130
Баллы
113
amyboose, зачем эти объяснения? Я всего лишь не согласился с твоим первоначальным утверждением
Все потому что для float числа записываются через букву F
которому ты сам в итоге и противоречишь
которое можно опустить при написании кода
Но, ты как обычно, не ищешь легких путей и опять думаешь, что это как-то повлияет на скорость работы, которая и в том и другом случае будет 1 секунда в минус охулиардной степени.
А в данном ТСом примере, так как числа целые, как раз таки, гораздо проще данные записывать без всяких суффиксов F.
 
Последнее редактирование:

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 311
Благодарностей
1 191
Баллы
113
amyboose, зачем эти объяснения? Я всего лишь не согласился с твоим первоначальным утверждением которому ты сам в итоге и противоречишь
Так я же объяснил, что float записывается через F, а число 15, например, не является float, оно приводится к нему посредством неявного приведения типов, что является другим понятием.
А в данном ТСом примере, так как числа целые, как раз таки, гораздо проще данные записывать без всяких суффиксов F.
Но мой код оказывается в 1 строку всего, твой - в 3 строки. Выход опять же будет в явном приведении, что окажется не так удобно писать:
Код:
float abs = 15/(float)4;
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 130
Баллы
113
Но мой код оказывается в 1 строку всего, твой - в 3 строки.
Ну это не показатель правильности кода, тем более, что значения все равно будут браться из переменных проекта (ТС писал, но удалил), но это и так понятно. И один хрен значения нужно будет конвертировать в тип float
C#:
float a = float.Parse(project.Variables["a"].Value);
float b = float.Parse(project.Variables["b"].Value);
return a / b;
 
  • Спасибо
Реакции: Olegazzz

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)