मेरे पास दो फ्लोटिंग पॉइंट नंबर a और b हैं। मैं जांच करना चाहता हूं कि क्या उनके अलग-अलग लक्षण हैं। देखने का आसान तरीका है

bool b = a * b < 0;

लेकिन दो नंबर बहुत छोटे हैं और एक * बी कम हो सकता है। इसे जांचने का कोई और सरल तरीका?

किसी को भी लगता है कि यह एक डुप्लिकेट प्रश्न है, कृपया मुझे एक उत्तर दें जो बिल्कुल a * b < 0 स्थिति से मेल खाता है। नोट यहाँ 0 का संकेत मेरे प्रश्न में अपरिभाषित है।

13
user1899020 2 पद 2015, 00:57

2 जवाब

सबसे बढ़िया उत्तर

आप निम्नानुसार std :: signbit का उपयोग कर सकते हैं:

bool c = std::signbit(a) == std::signbit(b);

लाइव डेमो

एक अन्य तरीका std :: copysign का उपयोग इस प्रकार है:

bool c = std::copysign(a,b) == a;
8
101010 1 पद 2015, 22:03

एक और उपाय है:

Bool c = ((0> a) == (0> b));

1
Stamen Rakov 13 फरवरी 2018, 16:12