Pertanyaan error C2296: '%': ilegal, operan kiri memiliki tipe 'ganda' di C ++


Saya harus menggunakan '%' dengan angka ganda, tetapi dalam C ++ itu tidak berfungsi. Contoh:

double x;
temp = x%10;

Saya mendapatkan kesalahan ini:

error C2296: '%' : illegal, left operand has type 'double' 

Bagaimana saya bisa menyelesaikan masalah ini tanpa mengubah nomor dari dua kali lipat menjadi integer? Jika saya mengubahnya, saya akan kehilangan bagian pecahan, dan saya tidak mau.

Apakah ada alternatif lain?


6
2017-11-27 08:26


asal


Jawaban:


% tidak didefinisikan untuk ganda, tetapi Anda dapat menggunakan fmod sebagai gantinya:

Hitung sisa pembagian   Mengembalikan sisa floating-point numer / denom (dibulatkan ke nol):

Contoh (diadaptasi untuk C ++) dari http://www.cplusplus.com/reference/cmath/fmod/:

#include <cmath>       /* fmod */
#include <iostream>

int main ()
{
  std::cout << "fmod of 5.3 / 2 is " <<  std::fmod (5.3, 2) << std::endl;
  return 0;
}

14
2017-11-27 08:27



Menggunakan fmod fungsi

#include <math.h>

double x;
temp = fmod(x, 10.0);

3
2017-11-27 08:28