Trong khi viết chương trình, tôi tìm thấy khối gốc của một số trong một trong các hàm của tôi.Tìm khối gốc của một số Sử dụng phương thức System.Math.Pow() trong C#
khi tôi sử dụng mã bên dưới, tôi đã nhận được giá trị không đúng cho gốc khối lập phương (1
đã được in cho n = 64
).
public static void cubicPairs(double n)
{
double root = (System.Math.Pow(n, (1/3)));
Console.WriteLine(root);
}
Bây giờ sau khi tôi đã thay đổi mã nhẹ này,
public static void cubicPairs(double n)
{
double root = (System.Math.Pow(n, (1.0/3.0))); //Changed how second parameter is passed
Console.WriteLine(root);
}
tôi đã root = 3.9999999999999996
(trong khi gỡ lỗi) nhưng phương pháp này đã được in 4
(đó là chính xác).
Tại sao có sự khác biệt giữa hai giá trị và nếu điều này có liên quan đến tham số thứ hai theo phương pháp System.Math.Pow()
(ví dụ: 1.0/3.0
là giá trị đệ quy), tôi nên sử dụng cái gì để tìm căn bậc ba 4
(trong khi gỡ lỗi) thay vì 3.9999999999999996
?
Tôi nghĩ rằng trong trường hợp đầu tiên là kết quả của 1/3 là một int, vì vậy bạn đã kết thúc làm n^0 – isalgueiro
@isalgueiro nhưng các tham số có phải là một giá trị gấp đôi và không phải là một int . Nếu nó đã được chuyển đổi sang int, không nên tôi nhận được bất kỳ lỗi hoặc một cái gì đó? – gkb
@gopal Không vì 'int' được chuyển đổi hoàn toàn thành' double'. –