Comment diviser deux entiers pour obtenir un double?
Comment diviser deux entiers pour obtenir un double?
Réponses:
Vous voulez lancer les chiffres:
double num3 = (double)num1/(double)num2;
Remarque: Si l'un des arguments en C # est a double
, une double
division est utilisée, ce qui donne a double
. Donc, ce qui suit fonctionnerait aussi:
double num3 = (double)num1/num2;
Pour plus d'informations, voir:
double num3 = (double)(num1/num2);
. Cela vous donnera juste une double représentation du résultat de la division entière!
double
lieu de float
? Je vois que la question se pose double
mais je suis quand même curieux.
double
et non float
. Lorsque vous écrivez une variable comme var a = 1.0;
, ce 1.0 est toujours un double
. Je suppose que c'est la principale raison.
Compléter la réponse de @ NoahD
Pour avoir une plus grande précision, vous pouvez convertir en décimal:
(decimal)100/863
//0.1158748551564310544611819235
Ou:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Les doubles sont représentés en allouant 64 bits tandis que la décimale utilise 128
(double)100/863
//0.11587485515643106
Pour plus de détails sur la représentation en virgule flottante en binaire et sa précision, consultez cet article de Jon Skeet où il parle floats
et doubles
et celui-ci où il parle decimals
.
double
a une précision de 53 bits, et c'est un format binaire à virgule flottante, alors qu'il decimal
est ... décimal, bien sûr, avec 96 bits de précision . Il double
est donc précis à ~ 15-17 chiffres décimaux et 28-29 chiffres décimaux (et pas deux fois la précision de double
). Plus important decimal
encore, n'utilise que 102 des 128 bits
decimals
(96), mais doubles
a 52 bits de mantisse , et non 53.
transformez les entiers en doubles.
Convertissez l'un d'eux en double d'abord. Ce formulaire fonctionne dans de nombreuses langues:
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
et non decimal
.