Saya punya program di C ++ (dikompilasi menggunakan g ++). Saya mencoba menerapkan dua ganda sebagai operan ke fungsi modulus, tetapi saya mendapatkan kesalahan berikut:
kesalahan: operan tidak valid dari tipe 'ganda' dan 'ganda' ke biner 'operator%'
Berikut kodenya:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
fmod
dapat menyebabkan perilaku yang tidak terduga. Sebagai contoh, secarafmod(1, 0.1);
matematis harus nol, tetapi pada kenyataannya hampir 0,1. Tingkat kesalahan naik dengan besarnya hasil bagi. Sebagai contoh,fmod(9E14, 0.1);
mengevaluasi menjadi sekitar 0,05, yang dari sudut pandang matematika jelas salah.fmod(x,0.1)
akan membagi x dengan fraksi yang tepat dan mengambil sisanya, daripada membaginya dengan nilai numerik "sepersepuluh".Jawaban:
The
%
operator adalah untuk bilangan bulat. Anda sedang mencarifmod()
fungsinya .sumber
angle
, katakanlah,359.9999999
maka keduanyaangle
danfmod(angle, 360)
kemungkinan akan ditampilkan sebagai360
. (Tambahkan lebih banyak angka 9 sesuai kebutuhan.) Coba cetak nilainya dengan, katakanlah, 50 digit presisi.fmod(x, y)
adalah fungsi yang Anda gunakan.sumber
Gunakan
fmod()
dari<cmath>
. Jika Anda tidak ingin menyertakan file header C:sumber
Anda dapat mengimplementasikan fungsi modulus Anda sendiri untuk melakukannya untuk Anda:
Maka Anda cukup menggunakan
dmod(6.3, 2)
untuk mendapatkan sisanya0.3
,.sumber