Thắc mắc về sự chính xác của hàm pow() trong tính toán

Chào mọi người, em đang viết một function in ra frequency của một nốt nhạc được người dùng nhập vào. Ví dụ, nếu người dùng nhập vào là A4 thì in ra màn hình frequency là 440Hz. Trong một quãng tám có bảy nốt là A,B,C,D,E,F,G. Có tất cả là 9 quãng tám (từ 0 tới 8). A5 có frequency là 440 * 2 = 880Hz, còn B4 là 440 * 2^(1/12). Frequency của một nốt nhạc được tính theo công thức là frequency = 27.5 * 2^(i/12 + j) với i là khoảng cách từ nốt đó tới nốt A trong cùng một quãng tám và j là số thứ tự của quãng. Khi em chạy hàm thì kết quả in ra mà hình cho A#4 là 440 chứ không phải là 466 (440*2^(1/12)=466) như hình bên dưới. Em muốn hỏi là tại sao lại như vậy và khắc phục như thế nào ạ? Cảm ơn mọi người đã đọc. :slight_smile:


1/12 được hiểu là 1 (nguyên) / 12 (nguyên) = 0. Bạn đổi thành 1.0/12.

Bạn có thể đổi biến sang kiểu double cho kết quả chính xác hơn.

Lần sau bạn up code lên thay vì up hình nhé.

2 Likes

Em cảm ơn anh đã nhắc ạ. Lần sau em sẽ up code ạ.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?