Как мне разделить два целых числа, чтобы получить двойное число?
Как мне разделить два целых числа, чтобы получить двойное число?
Ответы:
Вы хотите бросить числа:
double num3 = (double)num1/(double)num2;
Примечание. Если какой-либо из аргументов в C # является a double
, используется double
деление, которое приводит к a double
. Таким образом, будет работать следующее:
double num3 = (double)num1/num2;
Для получения дополнительной информации см .:
double num3 = (double)(num1/num2);
. Это просто даст вам двойное представление результата целочисленного деления!
double
вместо float
? Я вижу, что вопрос требует, double
но мне все равно любопытно.
double
и нет float
. Когда вы пишете переменную, как var a = 1.0;
это, этот 1.0 всегда является double
. Я думаю, это главная причина.
Дополняя ответ @ NoahD
Для большей точности вы можете привести к десятичному типу:
(decimal)100/863
//0.1158748551564310544611819235
Или:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Double представлены распределением 64 бита, в то время как десятичное использует 128
(double)100/863
//0.11587485515643106
Для получения более подробной информации о точке представлении с плавающей запятой в двоичном и его точности , посмотрите на этой статье от Jon тарелочек , где он говорит о том, floats
и doubles
и этом , где он говорит о decimals
.
double
имеет точность 53 бита, и это двоичный формат с плавающей запятой, тогда decimal
как ... десятичный, конечно, с точностью 96 бит . Так double
что с точностью до ~ 15-17 десятичных цифр и десятичных 28-29 цифр (и не в два раза больше точности double
). Что еще более важно на decimal
самом деле использует только 102 из 128 битов
decimals
(96), но у вас doubles
есть 52 бита мантиссы , а не 53.
приведите целые числа к двойникам.
Преобразование одного из них в двойное первое. Эта форма работает на многих языках:
real_result = (int_numerator + 0.0) / int_denominator
var result = 1.0 * a / b;
var firstNumber=5000,
secondeNumber=37;
var decimalResult = decimal.Divide(firstNumber,secondeNumber);
Console.WriteLine(decimalResult );
double
и нет decimal
.