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 doubledivision 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!
doublelieu de float? Je vois que la question se pose doublemais je suis quand même curieux.
doubleet 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 floatset doubleset celui-ci où il parle decimals.
doublea une précision de 53 bits, et c'est un format binaire à virgule flottante, alors qu'il decimalest ... décimal, bien sûr, avec 96 bits de précision . Il doubleest 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 decimalencore, n'utilise que 102 des 128 bits
decimals(96), mais doublesa 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 );
doubleet non decimal.