हाय दूर नंबरों की गोलाई मैं इस तरह डबल संख्या पूर्णांक बनाना (शून्य से दूर) C++ हैं:C++ से शून्य
4.2 ----> 5
5.7 ----> 6
-7.8 ----> -8
-34.2 ----> -35
यह करने के लिए कारगर तरीका क्या है?
हाय दूर नंबरों की गोलाई मैं इस तरह डबल संख्या पूर्णांक बनाना (शून्य से दूर) C++ हैं:C++ से शून्य
4.2 ----> 5
5.7 ----> 6
-7.8 ----> -8
-34.2 ----> -35
यह करने के लिए कारगर तरीका क्या है?
inline double myround(double x)
{
return x < 0 ? floor(x) : ceil(x);
}
the article Huppie cites में उल्लेख किया है, यह सबसे अच्छा
देखें http://en.cppreference.com/w/cpp/numeric/math/floor और http://en.cppreference.com/w/cpp/numeric/math/floor
या पैक्स के लिए धन्यवाद कि सभी नाव प्रकार भर में काम करता है एक टेम्पलेट के रूप में व्यक्त है , एक गैर-फ़ंक्शन संस्करण:
x = (x < 0) ? floor(x) : ceil(x);
धन्यवाद – Emre
अच्छा कॉल, @ रूबेन ने एक गैर-फ़ंक्शन संस्करण जोड़ा और आपको वोट दिया। आशा है कि आपको बुरा लगेगा (संपादन, यानी, जाहिर है कि आप वोट को ध्यान में रखते हैं)। – paxdiablo
खुद को 3k की प्रतीक्षा कर रहा है - एक इनलाइन विनिर्देशक में जोड़ा गया - मैं एक अच्छा नाम खोजने की कोशिश करता हूं और इसे सभी प्रयोगों के लिए एक टेम्पलेट के रूप में उपयोग lib में चिपकाता हूं - इससे कोई दक्षता नहीं होगी और आपको जल्दी से अनुमति मिल जाएगी –
कोशिश
double rounded = _copysign(ceil(abs(x)), x);
CPlusPlus.com पर इसी तरह की समस्या के बारे में एक अच्छा लेख है।
//--------------------------------------------------------------------------
// symmetric round up
// Bias: away from zero
template <typename FloatType>
FloatType ceil0(const FloatType& value)
{
FloatType result = std::ceil(std::fabs(value));
return (value < 0.0) ? -result : result;
}
क्यों नहीं है यह customFloor कहा जाता है - यह है न: पी –
मैं उद्धृत लेख में देख template
दिलचस्प लेख के रूप में अपनी impl'd, +1 –
@Ruben Bartelink: 'दौर' बेहतर होना चाहिए:) ... btw .. आपके पास कुछ निंजा टाइपिंग कौशल हैं ;-) – Huppie
(मूल) शीर्षक "सी ++ डबल से:
एक बेहतर समाधान लेख में वर्णित है, जो एक टेम्पलेट का उपयोग करता है: आपकी समस्या का आसान समाधान कुछ इस तरह होना चाहिए राउंडिंग ", मैंने सोचा था कि आप दो बार गोल करने का मतलब रखते हैं, बस यह सुनिश्चित करने के लिए :-) – paxdiablo
आप सही हैं: संपादन के लिए डी thx – Emre