Como divido dois números inteiros para obter um dobro?
Como divido dois números inteiros para obter um dobro?
Respostas:
Você deseja converter os números:
double num3 = (double)num1/(double)num2;
Nota: Se qualquer um dos argumentos em C # for a double
, double
será usada uma divisão que resultará em a double
. Portanto, o seguinte também funcionaria:
double num3 = (double)num1/num2;
Para mais informações, veja:
double num3 = (double)(num1/num2);
. Isso fornecerá uma representação dupla do resultado da divisão inteira!
double
vez de float
? Eu posso ver a pergunta, double
mas estou curiosa de qualquer maneira.
double
e não float
. Quando você escreve uma variável como var a = 1.0;
esta, este 1.0 é sempre a double
. Eu acho que esse é o principal motivo.
Complementando a resposta do @ NoahD
Para ter uma precisão maior, você pode converter em decimal:
(decimal)100/863
//0.1158748551564310544611819235
Ou:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Double são representados alocando 64 bits, enquanto o decimal usa 128
(double)100/863
//0.11587485515643106
Para mais detalhes sobre a representação de ponto flutuante em binário e sua precisão dar uma olhada neste artigo de Jon Skeet onde ele fala sobre floats
e doubles
e este onde ele fala sobre decimals
.
double
tem uma precisão de 53 bits e é um formato de ponto flutuante binário , enquanto que decimal
é um ... decimal, é claro, com 96 bits de precisão . Portanto, double
é preciso ter ~ 15-17 dígitos decimais e dígitos 28-29 decimais (e não duas vezes a precisão de double
). Mais importante ainda decimal
, na verdade, utiliza apenas 102 dos 128 bits
decimals
(96), mas doubles
tem 52 bits de mantissa , não 53.
converter os números inteiros para o dobro.
Converta um deles para o dobro primeiro. Este formulário funciona em vários idiomas:
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 não decimal
.