Làm cách nào để chia hai số nguyên để có được một số kép?
Làm cách nào để chia hai số nguyên để có được một số kép?
Câu trả lời:
Bạn muốn bỏ số:
double num3 = (double)num1/(double)num2;
Lưu ý: Nếu bất kỳ đối số nào trong C # là a double, thì phép doublechia được sử dụng dẫn đến a double. Vì vậy, những điều sau đây cũng sẽ làm việc:
double num3 = (double)num1/num2;
Để biết thêm thông tin xem:
double num3 = (double)(num1/num2);. Điều này sẽ chỉ cung cấp cho bạn một đại diện kép của kết quả của phép chia số nguyên!
doublethay thế floatkhông? Tôi có thể thấy các câu hỏi yêu cầu doublenhưng dù sao tôi cũng tò mò.
doublevà không float. Khi bạn viết một biến giống như vậy var a = 1.0;, 1.0 này luôn là a double. Tôi đoán đây là lý do chính.
Bổ sung cho câu trả lời của @ NoahD
Để có độ chính xác cao hơn, bạn có thể chuyển sang thập phân:
(decimal)100/863
//0.1158748551564310544611819235
Hoặc là:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Double được biểu diễn phân bổ 64 bit trong khi số thập phân sử dụng 128
(double)100/863
//0.11587485515643106
Để biết thêm chi tiết về các đại diện dấu chấm động trong nhị phân và độ chính xác của nó hãy xem bài viết này từ Jon Skeet nơi ông nói về floatsvà doublesvà cái này nơi ông nói về decimals.
doublecó độ chính xác là 53 bit, và đó là định dạng dấu phẩy động nhị phân , trong khi đó decimallà ... một số thập phân, tất nhiên, với độ chính xác 96 bit . Vì vậy, doublechính xác đến ~ 15-17 chữ số thập phân và số thập phân 28-29 chữ số (và không gấp đôi độ chính xác của double). Quan trọng hơn decimalthực tế chỉ sử dụng 102 trong số 128 bit
decimals(96), nhưng doublescó 52 bit mantissa , không phải 53.
đúc các số nguyên để nhân đôi.
Chuyển đổi một trong số họ thành một đôi đầu tiên. Hình thức này hoạt động trong nhiều ngôn ngữ:
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 );
doublevà không decimal.