2013-11-27 4 views
6

में 'डबल' टाइप किया गया है, मुझे डबल नंबरों के साथ '%' का उपयोग करना है, लेकिन सी ++ में यह काम नहीं करता है। उदाहरण:त्रुटि सी 22 9 6: '%': अवैध, बाएं ऑपरेंड में सी ++

double x; 
temp = x%10; 

मैं इस त्रुटि मिलती है:

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

मैं कैसे डबल से नंबर परिवर्तित करने के लिए पूर्णांक के बिना इस समस्या का समाधान कर सकते हैं? यदि मैंने इसे परिवर्तित किया है, तो मैं आंशिक भाग खो दूंगा, और मैं नहीं चाहता हूं।

क्या कोई और विकल्प है?

+2

'%' ऑपरेटर को 'डबल' के लिए परिभाषित नहीं किया गया है। आप 'int% anotherInt' कर सकते हैं। कोशिश करें ['fmod'] (http://en.cppreference.com/w/cpp/numeric/math/fmod) – Maroun

+0

% से दोगुनी आवेदन करके आप क्या उम्मीद करते हैं? –

+2

अवशेष वाले डिवीजन केवल पूर्णांक विभाजन के लिए समझ में आता है। '53.0/10 == 5.3' इसलिए 'डबल' डिवीजन के लिए कोई शेष नहीं है। – MSalters

उत्तर

14

% डबल्स के लिए निर्धारित नहीं है, लेकिन आप fmod बजाय का उपयोग कर सकते हैं:

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

उदाहरण (सी के लिए अनुकूलित ++) 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; 
} 
+0

मुझे भी यही समस्या है लेकिन आपका सुझाव मेरे लिए काम नहीं करता है। ऐसा इसलिए है क्योंकि> सी: \ प्रोग्राम फ़ाइलें (x86) \ Windows किट \ 8.0 \ में शामिल होने वाली समस्या \ um \ winbase.h (1999) शामिल है: यह माइक्रोसॉफ्ट फ़ाइल है। इसे अपडेट करना संभव नहीं है। इस तरह के मुकाबले इस समस्या को जीतने का कोई तरीका? –

3

fmod समारोह

#include <math.h> 

double x; 
temp = fmod(x, 10.0); 
का प्रयोग करें
+1

'#' शामिल करें, शायद, क्योंकि यह सी ++ है, और 'std :: fmod' है। – creichen

संबंधित मुद्दे