2013-11-27 23 views
6

içinde 'double' türünde çift karakterli '%' kullanmak zorundayım, ancak C++ 'da çalışmıyor. Örnek:hata C2296: '%': yasadışı, sol işlenen C++

double x; 
temp = x%10; 

bu hatayı alıyorum:

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

nasıl tamsayı çift numarayı dönüştürmeden bu sorunu çözebilir? Eğer dönüştürdüysem, kesirli parçayı kaybedeceğim ve istemiyorum.

Başka bir alternatif var mı?

+2

'%' operatörü 'double's için tanımlanmadı. "Int% anotherInt" yapabilirsin. ['Fmod'] 'ı deneyin (http://en.cppreference.com/w/cpp/numeric/math/fmod) – Maroun

+0

%' ye iki kat uygulayarak ne tür bir sonuç bekleyebilirsiniz? –

+2

Kalan bölümler sadece tamsayı bölme için anlamlıdır. 53.0/10 = 5.3 'bu yüzden' double' bölünmesi için kalan yok. – MSalters

cevap

14

% çiftler için tanımlanmamıştır, ama bunun yerine fmod kullanabilir: http://www.cplusplus.com/reference/cmath/fmod/ den

Compute remainder of division Returns the floating-point remainder of numer/denom (rounded towards zero):

örneği (C için uyarlanmış ++):

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

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

Benzer sorun var ama öneriniz benim için çalışmıyor. Bunun nedeni,> C: \ Program Files (x86) \ Windows Kits \ 8.0 \ Include \ um \ winbase.h (1999) 'da meydana gelen sorun: Microsoft dosyası. Güncellemek mümkün değil. Bu sorunu başka şekilde fethetmenin bir yolu var mı? –

3

fmod fonksiyonu

#include <math.h> 

double x; 
temp = fmod(x, 10.0); 
kullanın
+1

'#include ', muhtemelen C++ ve 'std :: fmod' gibi. – creichen