जवाबों:
var x = -100; ~x+1 === 100लेकिन var x = 100; ~x+1 === -100। Math.absहमेशा इसे सकारात्मक बनाता है जबकि लोगों को केवल संकेत का पूरक बना देता है।
किस बारे में x *= -1? मुझे इसकी सादगी पसंद है।
xफेक होगा। यदि x = 23वह समीकरण में छाया हुआ है, xतो बराबर होगा -23। श्री एस्केलेन्ते के शब्दों में, "एक सकारात्मक समय एक नकारात्मक के बराबर होता है। एक नकारात्मक समय एक नकारात्मक एक सकारात्मक के बराबर होता है।" ... "मैं इन kiiiiiiids तक कैसे पहुँचूँ?"
x=23, तो यह -23 बन जाएगा। जैसा कि सवाल है, 'जेएस में एक ऋणात्मक संख्या को धनात्मक संख्या में बदलें', लेकिन उपरोक्त किसी भी संख्या को फ्लिप करेगा, यह सकारात्मक या नकारात्मक होगा।
xहमेशा सकारात्मक नहीं बनाने के संदर्भ में थी । मेरी क्षमा याचना @myusuf
ऋण चिह्न (-) सकारात्मक संख्याओं को ऋणात्मक संख्याओं और ऋणात्मक संख्याओं को सकारात्मक संख्याओं में बदल सकता है। x=-yके लिए दृश्य चीनी है x=(y*-1)।
var y = -100;
var x =- y;
यदि आप दिलचस्प कोड लिखना चाहते हैं जिसे कोई और कभी भी अपडेट नहीं कर सकता है, तो यह कोशिश करें:
~ --x
~ऑपरेटर संख्या को 32 बिट पूर्णांक में परिवर्तित करता है। यदि आपके पास इनपुट के रूप में एक फ्लोट है, तो यह ठीक हो जाता है।
मुझे पता है कि यह थोड़ा देर से है, लेकिन इससे जूझ रहे लोगों के लिए, आप निम्नलिखित कार्यों का उपयोग कर सकते हैं:
किसी भी संख्या को सकारात्मक मोड़ो
let x = 54;
let y = -54;
let resultx = Math.abs(x); // 54
let resulty = Math.abs(y); // 54
किसी भी संख्या को ऋणात्मक मोड़ें
let x = 54;
let y = -54;
let resultx = -Math.abs(x); // -54
let resulty = -Math.abs(y); // -54
किसी भी संख्या को उल्टा करें
let x = 54;
let y = -54;
let resultx = -(x); // -54
let resulty = -(y); // 54
सकारात्मक के लिए नकारात्मक
var X = -10 ;
var number = Math.abs(X); //result 10
सकारात्मक से नकारात्मक
var X = 10 ;
var number = (X)*(-1); //result -10
नकारात्मक संख्या को सकारात्मक में बदलने के लिए (-1) का गुणा सबसे तेज़ तरीका है। लेकिन आपको सावधान रहना होगा कि मेरी गलती को सकारात्मक संख्या को नकारात्मक में परिवर्तित न करें! इसलिए अतिरिक्त जांच की जरूरत है ...
तब Math.abs, Math.floor और parseInt सबसे धीमा है।
https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1
मैंने खुद ऐसा कुछ किया।
num<0?num*=-1:'';
यह जाँचता है कि क्या संख्या ऋणात्मक है और यदि यह है, तो -1 से गुणा करें। यदि आप इसे कैप्चर करते हैं, तो यह आपके लिए एक मान लौटाता है। यदि आप इसे किसी चीज़ को सौंपना चाहते हैं, तो आपको शायद कुछ ऐसा करना चाहिए:
var out = num<0?num*=-1:num; //I think someone already mentioned this variant.
लेकिन यह वास्तव में निर्भर करता है कि आपका लक्ष्य क्या है। मेरे लिए यह सरल था, इसे सकारात्मक बनाएं अगर नकारात्मक, और कुछ नहीं करें। इसलिए कोड में ''। इस मामले में मैंने तृतीयक ऑपरेटर का उपयोग किया है क्योंकि मैं चाहता था, यह बहुत अच्छी तरह से हो सकता है:
if(num<0)num*=-1;
मैंने यहाँ बिटवाइज़ समाधान देखा और उस पर भी टिप्पणी करना चाहता था।
~--num; //Drawback for this is that num original value will be reduced by 1
मेरी राय में यह आत्मीयता बहुत फैंसी है, हम इसे इस तरह से फिर से लिख सकते हैं:
~(num = num-1);
सरल शब्दों में, हम ऋणात्मक संख्या लेते हैं, एक को इससे दूर करते हैं और फिर इसे उल्टा करते हैं। यदि हमने बिटवाइज़ को उल्टा कर दिया होता है तो आम तौर पर हमें 1 मूल्य बहुत छोटा मिलेगा। आप यह भी कर सकते हैं:
~num+1; //Wont change the actual num value, merely returns the new value
वही करेगा लेकिन पहले उल्टा करेगा और फिर सकारात्मक संख्या में 1 जोड़ देगा। हालाँकि आप ऐसा करते हैं:
~num++; //Wont display the right value.
यह पूर्वता के कारण का काम नहीं करेगा , पोस्टफिक्स संचालकों जैसे num++~ से पहले मूल्यांकन किया जाएगा और कारण प्रीफिक्स ++numनहीं होगा भले ही यह बिटक्वाइंड नॉट (~) के समान ही है, यह सही से बाईं ओर मूल्यांकन किया जाता है। मैंने उन्हें चारों ओर स्वैप करने की कोशिश की, लेकिन ऐसा लगता है कि उपसर्ग बिटवाइज़ नहीं की तुलना में थोड़ा बारीक है। +1 काम करेगा क्योंकि '+' में एक उच्च वरीयता है और बाद में मूल्यांकन किया जाएगा।
मैंने उस समाधान को मज़ेदार पाया और उस पर विस्तार करने का निर्णय लिया क्योंकि यह सिर्फ वहाँ फेंका गया था और लोगों को देख कर यह शायद अनदेखा कर रहा था। हालांकि हां, यह तैरने के साथ काम नहीं करेगा।
मेरी आशा है कि यह पोस्ट मूल प्रश्न से दूर नहीं गई है। : /
मेरा न्यूनतम दृष्टिकोण
ऋणात्मक संख्या को धनात्मक और इसके विपरीत में परिवर्तित करने के लिए
var num = -24;
num -= num*2;
console.log(num)
// result = 24
आप ~ ऑपरेटर का उपयोग कर सकते हैं जो तार्किक रूप से संख्या को ऋणात्मक में परिवर्तित करता है और 1 को ऋणात्मक में जोड़ता है:
var x = 3;
x = (~x + 1);
console.log(x)
// result = -3
मैं इसे करने का एक और तरीका जानता हूं। यह तकनीक पॉजिटिव और वाइस वर्सा के लिए नकारात्मक काम करती है
var x = -24;
var result = x * -1;
विपरीतता से:
var x = 58;
var result = x * -1;
लाइव कोड:
// NEGATIVE TO POSITIVE: ******************************************
var x = -24;
var result = x * -1;
console.log(result);
// VICE VERSA: ****************************************************
var x = 58;
var result = x * -1;
console.log(result);
// FLOATING POINTS: ***********************************************
var x = 42.8;
var result = x * -1;
console.log(result);
// FLOATING POINTS VICE VERSA: ************************************
var x = -76.8;
var result = x * -1;
console.log(result);
एक कार्यात्मक प्रोग्रामिंग के लिए रामदा में इसके लिए एक अच्छा तरीका है। एक ही विधि सकारात्मक से नकारात्मक और इसके विपरीत जाने पर काम करती है।
यदि आप चाहते हैं कि संख्या हमेशा सकारात्मक रहे तो कोई फर्क नहीं पड़ता कि आप यह क्या कर सकते हैं।
function toPositive(n){
if(n < 0){
n = n * -1;
}
return n;
}
var a = toPositive(2); // 2
var b = toPositive(-2); // 2
आप भी यह कोशिश कर सकते हैं, लेकिन मैंने इसकी सिफारिश नहीं की है:
function makePositive(n){
return Number((n*-n).toString().replace('-',''));
}
var a = makePositive(2); // 2
var b = makePositive(-2); // 2
इसके साथ समस्या यह है कि आप संख्या को नकारात्मक में बदल सकते हैं, फिर स्ट्रिंग में परिवर्तित कर सकते हैं और - को स्ट्रिंग से हटा सकते हैं , फिर वापस इंट में परिवर्तित कर सकते हैं। जो मुझे लगता है कि सिर्फ दूसरे फ़ंक्शन का उपयोग करके अधिक प्रसंस्करण ले जाएगा।
मैंने इसे php में टेस्ट किया है और पहला फंक्शन तेज़ है, लेकिन कभी-कभी JS कुछ क्रेज़ी चीज़ें करता है, इसलिए मैं निश्चित रूप से नहीं कह सकता।
n*-nहोना चाहिए n*-1। मैं उदाहरण को पूरी तरह से हटा दूंगा, हालांकि, पहले उदाहरण की सादगी की तुलना में प्रकार रूपांतरण और विधि कॉल बहुत अक्षम हैं। यहां तक कि जेएस की विचित्रता संभवतः यहां मदद नहीं कर सकती है