Come divido due numeri interi per ottenere un doppio?
Come divido due numeri interi per ottenere un doppio?
Risposte:
Vuoi lanciare i numeri:
double num3 = (double)num1/(double)num2;
Nota: se uno qualsiasi degli argomenti in C # è a double, doubleviene utilizzata una divisione che risulta in a double. Quindi, funzionerebbe anche il seguente:
double num3 = (double)num1/num2;
Per ulteriori informazioni, vedere:
double num3 = (double)(num1/num2);. Questo ti darà solo una doppia rappresentazione del risultato della divisione intera!
doubleinvece di float? Riesco a vedere la domanda, doublema sono curioso comunque.
doublee non float. Quando scrivi una variabile come var a = 1.0;questa, questa 1.0 è sempre una double. Immagino che questo sia il motivo principale.
Completando la risposta di @ NoahD
Per avere una maggiore precisione puoi eseguire il cast in decimale:
(decimal)100/863
//0.1158748551564310544611819235
O:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
I doppi sono rappresentati allocando 64 bit mentre i decimali ne usano 128
(double)100/863
//0.11587485515643106
Per maggiori dettagli sulla rappresentazione in virgola mobile in formato binario e la sua precisione dare un'occhiata a questo articolo da Jon Skeet dove si parla di floatse doublese questo in cui parla decimals.
doubleha una precisione di 53 bit, ed è un formato binario a virgola mobile, mentre decimalè ... decimale, ovviamente, con 96 bit di precisione . Quindi doubleè preciso a ~ 15-17 cifre decimali e cifre decimali 28-29 (e non il doppio della precisione di double). Ancora più importante in decimalrealtà usa solo 102 dei 128 bit
decimals(96), ma doublesha 52 bit di mantissa , non 53.
cast degli interi in doppio.
Converti prima uno di loro in doppio. Questo modulo funziona in molte lingue:
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 );
doublee non decimal.