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
, double
viene 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!
double
invece di float
? Riesco a vedere la domanda, double
ma sono curioso comunque.
double
e 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 floats
e doubles
e questo in cui parla decimals
.
double
ha 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 decimal
realtà usa solo 102 dei 128 bit
decimals
(96), ma doubles
ha 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 );
double
e non decimal
.