Як поділити два цілих числа, щоб отримати подвійне?
Як поділити два цілих числа, щоб отримати подвійне?
Відповіді:
Ви хочете передати цифри:
double num3 = (double)num1/(double)num2;
Примітка: Якщо будь-який з аргументів у C # є a double
, використовується double
розділення, яке призводить до а double
. Отже, також діятиме таке:
double num3 = (double)num1/num2;
Для отримання додаткової інформації див:
double num3 = (double)(num1/num2);
. Це просто дасть вам подвійне представлення результату цілого поділу!
double
замість цього float
? Я бачу, що питання вимагає, double
але мені все одно цікаво.
double
а не float
. Коли ви пишете змінну так само var a = 1.0;
, ця 1,0 завжди є a double
. Я думаю, це головна причина.
Доповнення відповіді @ NoahD
Для більшої точності ви можете навести десятковий:
(decimal)100/863
//0.1158748551564310544611819235
Або:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Подвійні представлені, виділяючи 64 біт, а десятковий - 128
(double)100/863
//0.11587485515643106
Для отримання більш докладної інформації про точку поданні з плаваючою комою в довічним і його точності , подивіться на цій статті від Jon тарілочок , де він говорить про те, floats
і doubles
та це , де він говорить про decimals
.
double
має точність 53 біта, і це двійковий формат з плаваючою комою, тоді decimal
як це ... десятковий, звичайно, з 96 бітами точності . Тож double
точно до ~ 15-17 десяткових цифр і десяткових 28-29 цифр (і не вдвічі більше точності double
). Що ще важливіше, decimal
насправді використовується лише 102 із 128 біт
киньте цілі числа на подвійні.
Перетворіть спочатку одну з них у подвійну. Ця форма працює багатьма мовами:
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
.