Рейтинг:
24
Dave Kreskowiak
Это потому, что вы указываете два целых числа (5 и 2), а не значения с плавающей запятой.
Измените код на (в C#):
float f = 5f / 2f;
Console.WriteLine(f);
В большинстве языков, если вы не укажете десятичное точечное значение (5 вместо 5.0), это значение будет рассматриваться как целое. Целочисленное деление никогда не вернет значение с плавающей запятой, поэтому вы получите 2 вместо 2,5.
Ammar Shaukat
означает, что если оператор divide имеет числа int с обеих сторон, он будет рассматривать все вычисление как целые числа ( скорее всего, произойдет неявное приведение )
Dave Kreskowiak
В правой части выражения нет неявного приведения. Поскольку вы не выражали 5 и 2 как любой плавающий тип, они интерпретируются как целые числа. Единственное неявное приведение, сделанное в этом операторе, - это когда выражение справа вычисляется и собирается быть назначенным переменной слева. Ваше выражение действительно такое:
float f = (float)( (int)5 / (int)2 );
что в конечном итоге приводит к такой оценке:
float f = (float)( 2 );
что в конечном итоге заканчивается так:
float f = 2f;
Существуют различные способы указания типа постоянного значения:
< pre lang=C# " >
int c = 2;
поплавок f = 5.0 F;
двойной d = 4,0;
двойной d = 4,0 D;
двойной d = (двойной)4;
десятичное число d = 6,0 м;
десятичное число d = (десятичное число)6.3;
Hassaan Akbar
я хотел бы добавить.. (float) (5/2) также вернет 2, потому что мы набираем тип после того, как он уже был внутренне приведен к int.
Некоторые правильные способы таковы,
5f / 2
5 / 2f
5.0/2
5/2.0
(плавающий)5/2
В более длинных формулах обычно достаточно ввести первые вычисления в соответствии с правилом DMAS
например, следующая формула вернет правильный результат,
(5/2.0 + 3*6.0)(324 + 452)+ (32+ 341/2.0)
Рейтинг:
1
Mobeen Rashid
В C# по умолчанию оператор / возвращает результат в System. Int32.
System.Int32 answer = 5 / 2;
если вы хотите получить ответ в float или double, просто выполните явное приведение.
decimal answerInDeciaml = (decimal)5 / 2;