जावास्क्रिप्ट में सकारात्मक संख्या के लिए सकारात्मक संख्या?


101

असल में, एब्स का उलटा। अगर मेरे पास:

if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
  slideNum = -slideNum
}
console.log(slideNum)

कोई बात नहीं क्या कंसोल हमेशा एक सकारात्मक संख्या देता है। मैं यह कैसे तय करुं?

यदि मैं करता हूँ:

if ($this.find('.pdxslide-activeSlide').index() < slideNum - 1) {
  _selector.animate({
    left: (-slideNum * sizes.images.width) + 'px'
  }, 750, 'InOutPDX')
} else {
  _selector.animate({
    left: (slideNum * sizes.images.width) + 'px'
  }, 750, 'InOutPDX')
}

यह थियो काम करता है, लेकिन यह "DRY" नहीं है और सिर्फ एक कोड के लिए JUST के एक पूरे ब्लॉक के लिए बेवकूफ है -


4
मुझे यकीन है कि इसके लिए एक jQuery प्लगइन है।
जैकब हैम्पल

जवाबों:


191
Math.abs(num) => Always positive
-Math.abs(num) => Always negative

हालांकि, आपको लगता है कि आपके कोड के लिए

if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum = -slideNum }
console.log(slideNum)

यदि पाया गया सूचकांक 3 है और स्लाइडनाम 3 है,
तो 3 <3-1 => असत्य
तो स्लाइडनाम सकारात्मक रहता है ??

यह मेरे लिए एक तर्क त्रुटि की तरह दिखता है।



29

सकारात्मक को नकारात्मक या ऋणात्मक को सकारात्मक में बदलने का मूल सूत्र:

i - (i * 2)

32
इसमें गलत क्या है i * -1? इसके अलावा, मुझे यकीन नहीं है कि यह वास्तविक प्रश्न का उत्तर देता है।
एंड्रयू बार्बर

5
यह वास्तुकला पर निर्भर है, लेकिन 0 - मैं तेज़ हो सकता
हूं

@AndrewBarber i * -1क्रोम के वर्तमान संस्करण में काम नहीं करता है। Use -Math.abs (1) सुनिश्चित नहीं है कि यह काम क्यों करता है, उम्मीद है कि कोई व्यक्ति क्यों पर विस्तार कर सकता है।
फिलिप रोलिंस

@PhilipRollins i * -1हमेशा काम करेगा। मैं नहीं जानता कि आपने कैसे प्रयास किया, शायद आपके पास कुछ टाइपो था। लेकिन ... सकारात्मक को नकारात्मक या नकारात्मक को सकारात्मक में बदलने के i = -iबजाय i = i * -1(या i *= -1) के साथ गलत क्या है ?
डिएगो ज़ोराकैकी

@DiegoZoracKy मैंने भी ऐसा ही सोचा था, लेकिन क्रोम के संस्करण के लिए नहीं जो मैं चला रहा था और यह फ़ायरफ़ॉक्स में काम करता था इसलिए एक टाइपो प्रश्न से बाहर है। मैं अभी लिनक्स पर हूं, लेकिन आप क्रोम पर अपने सिद्धांत का परीक्षण करने के लिए स्वतंत्र हैं। क्रोम ऑटो-अपडेट को ध्यान में रखें ताकि कोई भी बग फिक्स पहले से ही लागू हो जाए और किसी भी नए कीड़े को समुदाय से बाहर कर दिया जाए, इसका मतलब यह बग हो सकता है जो केवल कुछ दिनों तक चलता है और अब हमेशा के लिए तय हो गया है।
फिलिप रोलिंस

9

जावास्क्रिप्ट में एक संख्या का नकारात्मक संस्करण प्राप्त करने के लिए आप हमेशा ~बिटवाइज ऑपरेटर का उपयोग कर सकते हैं ।

उदाहरण के लिए, यदि आपके पास है a = 1000और आपको इसे नकारात्मक में बदलने की आवश्यकता है, तो आप निम्न कार्य कर सकते हैं:

a = ~a + 1;

कौन सा में परिणाम होगा aजा रहा है -1000


क्या यह नकारात्मक 1 से गुणा करने से तेज है?
रयानडॉकिंस

मुझे यकीन नहीं है कि ईमानदार होना चाहिए, आपको कुछ देखना होगा।
बेंजामिन विलियम्स

@RyanDawkins -1 से गुणा करने से तेज नहीं होगा। जावास्क्रिप्ट का बूलियन ऑपरेटरों के पास मूल रूप से सी नहीं है। तो, बूलियन ऑपरेशन करने के लिए, JS को हुड के नीचे के प्रकारों के बीच बदलना होगा।
पालक

2
क्यों नहीं a = -a?
डिएगो ज़ोराकैकी

बिटवाइज़ एक नंबर को बिल्कुल नकारता नहीं है। ~1000है -1001, नहीं -1000
ब्रेंटनस्ट्राइन

7
var x = 100;
var negX = ( -x ); // => -100

1
कृपया अपना उत्तर संपादित करते हुए कुछ स्पष्टीकरण दें, कोड केवल उत्तर से बचें
GGO

1
@GGO ... मुझे यकीन नहीं है कि यह पहले से ही स्पष्ट नहीं है, लेकिन निश्चित है: मूल्य के सामने माइनस साइन को जोड़कर, फिर उस कोष्ठक में लपेटकर, मान का मूल्यांकन किया जाता है ... परिणाम नकारात्मक है मूल्य।
tpayne84

6

क्या आप सुनिश्चित हैं कि नियंत्रण शरीर में जा रहा है if? के रूप में ifकभी हालत सच में करता है? क्योंकि अगर ऐसा नहीं होता है, तो ifवसीयत का शरीर कभी निष्पादित नहीं slideNumहोगा और सकारात्मक रहेगा। मैं एक अनुमान लगाने जा रहा हूं कि यह वही है जो आप देख रहे हैं।

अगर मैं फायरबग में निम्नलिखित प्रयास करता हूं, तो यह काम करने लगता है:

>>> i = 5; console.log(i); i = -i; console.log(i);
5
-5

slideNum *= -1काम भी करना चाहिए। जैसा होना चाहिए Math.abs(slideNum) * -1


मैंने अभी किया if($this.find('.pdxslide-activeSlide').index() < slideNum-1){ slideNum *= -1 }और im अभी भी उस कंसोल में सकारात्मक लौट रहा है।
ऑस्कर गोडसन

@ ऑस्कर, विविन जो कह रहा है, $this.find('.pdxslide-activeSlide').index() < slideNum-1वह हमेशा झूठ है।
डेविड तांग

4

यदि आपको Math.Abs ​​* -1 का उपयोग करने का मन नहीं है, तो आप इस कथन को सरल बना सकते हैं: P

if (x > 0) {
    x = -x;
}

बेशक आप इसे इस तरह से बना सकते हैं

function makeNegative(number) {
    if (number > 0) {
        number = -number;
    }
}

makeNegative (-3) => -3 makeNegative (5) => -5

उम्मीद है की यह मदद करेगा! Math.abs संभावना है कि आप के लिए काम करेंगे, लेकिन अगर यह ऐसा नहीं करता है


एक प्रश्न का उत्तर देने से पहले आपको यह भी विचार करना चाहिए कि यह कब पूछा गया था। यह सवाल लगभग 5 साल पुराना है। इसलिए जब तक तकनीक नहीं बदली है और अब एक बेहतर / अधिक उपयुक्त उत्तर है, आमतौर पर किसी अन्य उत्तर की पेशकश के द्वारा बहुत अधिक मूल्य नहीं जोड़ा जाता है।
इगोर

1
मैं व्यक्तिगत रूप से हर समय पुराने स्टैक ओवरफ्लो प्रश्नों के माध्यम से देखता हूं। यकीन है कि यह भी एक समर्थक के लिए उपयोगी नहीं होगा, लेकिन शायद एक शुरुआत टिप की सराहना कर सकता है! कहा कि सबसे आसान तरीका वास्तव में ऊपर है -मैथ। एब्स (-3) जैसा कि मैथ के ऊपर चर्चा की गई है। कोई भी मूल्य सकारात्मक है। फिर नकारात्मक उपसर्ग इसे नकारात्मक बनाता है
ऐश पेटिट

Upvoted। व्यक्तिगत रूप से मैं इस जवाब की सराहना करता हूं और इसे मूल्यवान पाया। आप किसी से भी सीख सकते हैं।
२२:५er को जेरेमीसॉव

3
var i = 10;
i = i / -1;

परिणाम: -10

var i = -10;
i = i / -1;

परिणाम: 10

यदि आप नकारात्मक 1 से विभाजित करते हैं, तो यह हमेशा आपके नंबर को किसी भी तरह से फ्लिप करेगा।



2

जावास्क्रिप्ट के पास इसके लिए एक समर्पित ऑपरेटर है: एकात्मक नकार

TL; DR: यह माइनस साइन है!

एक संख्या को नकारने के लिए, बस इसे -सबसे सहज संभव तरीके से उपसर्ग करें । कोई फ़ंक्शन लिखने की आवश्यकता नहीं है, बिटवाइज़ ऑपरेटर Math.abs()द्वारा गुणा -1या उपयोग करें।

संख्याओं पर एकतरफा नकार कार्य

let a = 10;  // a is `10`
let b = -10; // b is `-10`

यह चर के साथ भी काम करता है:

let x = 50;
x = -x;      // x is now `-50`

let y = -6;
y = -y;      // y is now `6`

यदि आप ग्रुपिंग ऑपरेटर (उर्फ कोष्ठक) का उपयोग करते हैं, तो आप इसका कई बार उपयोग कर सकते हैं:

l = 10;       // l is `10`
m = -10;      // m is `-10`
n = -(10);    // n is `-10`
o = -(-(10)); // o is `10`
p = -(-10);   // p is `10` (double negative makes a positive)

उपरोक्त सभी एक चर के साथ भी काम करता है।


1

उपयोग 1 - x

x वह संख्या जिसमें आप उलटना चाहते हैं


3
बस -xसहता है।
अंती हापाला

1
जस्ट -x का परिणाम -0 है। यह समाधान बेहतर है अगर वहाँ शून्य हो सकता है
chrismarx

1

यह नकारात्मक सरणी को सकारात्मक या इसके विपरीत में बदल देगा

function negateOrPositive(arr) {
    arr.map(res => -res)
};

0

वेनिला जावास्क्रिप्ट में

if(number > 0)
  return -1*number;

जहां संख्या ऊपर धनात्मक संख्या है आप परिवर्तित करना चाहते हैं

यह कोड केवल धनात्मक संख्याओं को ऋणात्मक संख्याओं में बदलकर सरल करेगा जिसे -1 से गुणा करके

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.