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 doublepembagian 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!
doublealih-alih float? Saya dapat melihat pertanyaannya doubletetapi saya tetap ingin tahu.
doubledan 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 floatsdan doublesdan ini salah satu di mana ia berbicara tentang decimals.
doublememiliki ketepatan 53 bit, dan ini adalah format titik-mengambang biner , sedangkan decimaladalah ... desimal, tentu saja, dengan 96 bit presisi . Jadi doubletepat untuk ~ 15-17 digit desimal dan desimal 28-29 digit (dan tidak dua kali presisi double). Lebih penting lagi decimalsebenarnya hanya menggunakan 102 dari 128 bit
decimals(96), tetapi doublesmemiliki 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 );
doubledan tidak decimal.