Как мне разделить два целых числа, чтобы получить двойное?
Как я могу разделить два целых числа, чтобы получить двойное?
Ответы (7)
Вы хотите бросить числа:
double num3 = (double)num1/(double)num2;
Примечание. Если какой-либо из аргументов в C # является double
, используется разделение double
, которое приводит к double
. Итак, следующее тоже будет работать:
double num3 = (double)num1/num2;
Для получения дополнительной информации см .:
double num3 = (double)(num1/num2);
. Это просто даст вам двойное представление результата целочисленного деления!
- person The Lonely Coder; 09.10.2014
double
вместо float
? Я вижу, что вопрос требует double
, но мне все равно любопытно.
- person Kyle Delaney; 17.05.2017
double
, а не float
. Когда вы пишете переменную как var a = 1.0;
, эта 1.0 всегда будет double
. Думаю, это основная причина.
- person this.myself; 27.02.2018
Дополняя ответ @NoahD
Для большей точности вы можете использовать десятичный формат:
(decimal)100/863
//0.1158748551564310544611819235
Or:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Двойные представлены с выделением 64 бита, а десятичные - с 128.
(double)100/863
//0.11587485515643106
Подробное объяснение «точности»
Дополнительные сведения о представлении с плавающей запятой в двоичном формате и его точности см. В этой статье от Джона Скита, где он говорит о floats
и doubles
, и об этом, где он говорит о decimals
.
double
имеет точность 53 бита, и это двоичный формат с плавающей запятой, тогда как decimal
- это ... десятичный формат, конечно, с 96 бит точности. Таким образом, double
имеет точность ~ 15-17 десятичных цифр и 28-29 десятичных цифр (и не вдвое превышает точность double
). Что еще более важно, decimal
на самом деле использует только 102 из 128 бит
- person phuclv; 08.07.2018
decimals
(96), но doubles
имеет 52 бита мантиссы, а не 53.
- person fabriciorissetto; 22.09.2018
преобразуйте целые числа в двойные.
Сначала преобразуйте одно из них в двойное. Эта форма работает на многих языках:
real_result = (int_numerator + 0.0) / int_denominator
var result = 1.0 * a / b;
- person Basic; 17.03.2017
Я просмотрел большинство ответов и почти уверен, что это недостижимо. Что бы вы ни пытались разделить два int на double или float, этого не произойдет. Но у вас есть множество методов для выполнения вычислений, просто преобразуйте их в float или double, прежде чем расчет будет правильным.
double
, а не decimal
.
- person Kyle Delaney; 17.05.2017