Як поділити два цілих числа, щоб отримати подвійне?
Як поділити два цілих числа, щоб отримати подвійне?
Відповіді:
Ви хочете передати цифри:
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.