Bagaimana cara membagi dua bilangan bulat untuk mendapatkan ganda?
Bagaimana cara membagi dua bilangan bulat untuk mendapatkan ganda?
Jawaban:
Anda ingin memberikan nomor:
double num3 = (double)num1/(double)num2;
Catatan: Jika salah satu argumen dalam C # adalah a double
, sebuah double
pembagian digunakan yang menghasilkan a double
. Jadi, berikut ini akan berfungsi juga:
double num3 = (double)num1/num2;
Untuk informasi lebih lanjut, lihat:
double num3 = (double)(num1/num2);
. Ini hanya akan memberi Anda representasi ganda dari hasil pembagian integer!
double
alih-alih float
? Saya dapat melihat pertanyaannya double
tetapi saya tetap ingin tahu.
double
dan tidak float
. Ketika Anda menulis variabel seperti var a = 1.0;
, 1.0 ini selalu a double
. Saya kira inilah alasan utamanya.
Melengkapi jawaban @ NoahD
Untuk memiliki presisi yang lebih besar, Anda dapat menggunakan desimal:
(decimal)100/863
//0.1158748551564310544611819235
Atau:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Dobel diwakili mengalokasikan 64 bit sementara desimal menggunakan 128
(double)100/863
//0.11587485515643106
Untuk rincian lebih lanjut tentang representasi floating point di biner dan presisi lihat artikel ini dari Jon Skeet mana ia berbicara tentang floats
dan doubles
dan ini salah satu di mana ia berbicara tentang decimals
.
double
memiliki ketepatan 53 bit, dan ini adalah format titik-mengambang biner , sedangkan decimal
adalah ... desimal, tentu saja, dengan 96 bit presisi . Jadi double
tepat untuk ~ 15-17 digit desimal dan desimal 28-29 digit (dan tidak dua kali presisi double
). Lebih penting lagi decimal
sebenarnya hanya menggunakan 102 dari 128 bit
decimals
(96), tetapi doubles
memiliki 52 bit mantissa , bukan 53.
cor bilangan bulat menjadi dua kali lipat.
Konversikan salah satunya menjadi dobel terlebih dahulu. Formulir ini berfungsi dalam banyak bahasa:
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
dan tidak decimal
.