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 double
chia đượ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!
double
thay thế float
không? Tôi có thể thấy các câu hỏi yêu cầu double
nhưng dù sao tôi cũng tò mò.
double
và 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ề floats
và doubles
và cái này nơi ông nói về decimals
.
double
có độ chính xác là 53 bit, và đó là định dạng dấu phẩy động nhị phân , trong khi đó decimal
là ... một số thập phân, tất nhiên, với độ chính xác 96 bit . Vì vậy, double
chí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 decimal
thực tế chỉ sử dụng 102 trong số 128 bit
decimals
(96), nhưng doubles
có 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 );
double
và không decimal
.