জাভাস্ক্রিপ্টে নেতিবাচক সংখ্যাতে ইতিবাচক নম্বর?


104

মূলত, অ্যাবস এর বিপরীত। যদি আমার থাকে:

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 প্লাগইন আছে।
জাকুব হাম্পল

উত্তর:


196
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 => মিথ্যা
তাই স্লাইডনামটি ইতিবাচক থাকে ??

এটি আমার কাছে আরও যুক্তিযুক্ত ত্রুটির মতো দেখাচ্ছে।



30

ইতিবাচক থেকে নেতিবাচক বা নেতিবাচক থেকে ইতিবাচক বিপরীত করার জন্য মূল সূত্র:

i - (i * 2)

32
এর সাথে কী হয়েছে i * -1? এছাড়াও, আমি নিশ্চিত নই যে এটি আসল প্রশ্নের উত্তর দেয়।
অ্যান্ড্রু বারবার

4
এটি স্থাপত্যগতভাবে নির্ভরশীল, তবে 0 - আমি দ্রুত হতে পারি
বেন টালিডিয়োরোস

@ অ্যান্ড্রুবার্বার i * -1ক্রোমের বর্তমান সংস্করণে কাজ করছে বলে মনে হয় না। ব্যবহার করুন-ম্যাথ.অ্যাবস (1) এটি কেন কাজ করে তা নিশ্চিত নয়, আশা করি কেউ কেন এটির কারণে প্রসারিত করতে পারে।
ফিলিপ রোলিনস

@ ফিলিপললিন্স i * -1সর্বদা কাজ করবে। আমি জানি না আপনি কীভাবে চেষ্টা করেছিলেন, সম্ভবত আপনার কিছু টাইপ হয়েছিল had কিন্তু ... (বা ) এর i = -iপরিবর্তে ইতিবাচক থেকে নেতিবাচক বা negativeণাত্মক থেকে ইতিবাচককে বিপরীত করার ক্ষেত্রে কী ভুল ? i = i * -1i *= -1
দিয়েগো জোরাক্কি

@ ডিগোজোরাককি আমিও ভেবেছিলাম, তবে ক্রোম সংস্করণটির জন্য নয় যে আমি চালিয়ে যাচ্ছিলাম এবং এটি ফায়ারফক্সে কাজ করেছে যাতে টাইপো প্রশ্নের বাইরে চলে যায়। আমি এখনই লিনাক্সে আছি, তবে আপনি ক্রোমে আপনার তত্ত্বটি পরীক্ষা করতে মুক্ত। ক্রোম অটো-আপডেটগুলি মনে রাখবেন যাতে কোনও বাগ ফিক্স ইতিমধ্যে প্রয়োগ হয়ে যায় এবং কোনও নতুন বাগ সম্প্রদায়ের কাছে ঠেলে দেওয়া হয়, যার অর্থ এটি কোনও বাগ হতে পারে যা কেবল কয়েক দিন স্থায়ী হয়েছিল এবং এখন চিরতরে স্থির হয়ে গেছে।
ফিলিপ রোলিনস

9

জাভাস্ক্রিপ্টে কোনও সংখ্যার নেতিবাচক সংস্করণ পেতে আপনি সর্বদা ~বিটওয়াইস অপারেটরটি ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ, যদি আপনার কাছে থাকে a = 1000এবং আপনার এটিকে নেতিবাচক রূপান্তর করতে হবে, আপনি নিম্নলিখিতগুলি করতে পারেন:

a = ~a + 1;

যা aসত্ত্বেও ফলত -1000


এটি কি নেতিবাচক 1 দ্বারা গুণনের চেয়ে দ্রুত?
ryandawkins

আমি সত্যনিষ্ঠ হওয়ার বিষয়ে নিশ্চিত নই, এমন কিছু যা আপনাকে .োকাতে হবে।
বেনিয়ামিন উইলিয়ামস

@ রায়ানডাকিনস এটি -1 দ্বারা গুণনের চেয়ে দ্রুত হবে না। জাভাস্ক্রিপ্টে বুলিয়ান অপারেটর নেই যা সি করে C সুতরাং, একটি বুলিয়ান অপারেশন করতে, জেএসকে হুডের নীচে প্রকারের মধ্যে রূপান্তর করতে হবে।
স্পিনলক

4
কেন হবে না a = -a?
দিয়েগো জোরাককি

বিটওয়াইজ কোনও সংখ্যাটিকে হুবহু অস্বীকার করে না। ~1000হয় -1001, না -1000
ব্রেন্টনস্ট্রাইন

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

4
দয়া করে আপনার উত্তর সম্পাদনা করার জন্য কিছু ব্যাখ্যা যুক্ত করুন, কেবলমাত্র উত্তরগুলি
এড়ান

4
@ জিজিও ... আমি কীভাবে এটি ইতিমধ্যে পরিষ্কার নয় তা নিশ্চিত নই, তবে নিশ্চিত: মানটির সামনে বিয়োগ চিহ্নটি যুক্ত করে, এবং প্রথমটি বন্ধনীর মাধ্যমে, মানটি মূল্যায়ন করা হয় ... ফলাফলটি হ'ল নেগেশন মান।
tpayne84

6

আপনি কি নিশ্চিত যে নিয়ন্ত্রণের শরীরে নিয়ন্ত্রণ চলেছে if? যেমনটি ifকি চিরকালের মতো সত্য হয়? কারণ এটি যদি না হয় তবে theশ্বরের দেহ 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 }এবং আমি এখনও সেই কনসোল.লগে ইতিবাচক প্রত্যাবর্তন করছি?
অস্কার গডসন

@ অস্কার, ভিভিন যা বলছে তা $this.find('.pdxslide-activeSlide').index() < slideNum-1হ'ল সর্বদা মিথ্যা।
ডেভিড টাং

4

আপনি যদি ম্যাথ.অ্যাবস * -1 ব্যবহারের মতো মনে করেন না তবে আপনি এই সহজ বক্তব্যটি করতে পারেন: পি

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

অবশ্যই আপনি এটি এই মত একটি ফাংশন করতে পারে

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

MakeNegative (-3) => -3 MakeNegative (5) => -5

আশাকরি এটা সাহায্য করবে! ম্যাথ.এবস সম্ভবত আপনার জন্য কাজ করবে তবে এটি যদি এই সামান্য হয় না


কোনও প্রশ্নের উত্তর দেওয়ার আগে আপনাকে কখন জিজ্ঞাসা করা হয়েছিল তাও বিবেচনা করা উচিত। এই প্রশ্নটি প্রায় 5 বছরের পুরনো। সুতরাং প্রযুক্তি পরিবর্তিত না হলে এবং এখন আরও ভাল / আরও উপযুক্ত উত্তর না থাকলে সাধারণত অন্য উত্তর দেওয়ার মাধ্যমে খুব বেশি মান যুক্ত হয় না।
ইগোর

4
আমি ব্যক্তিগতভাবে সর্বদা পুরানো স্ট্যাক ওভারফ্লো প্রশ্নগুলি দেখি। অবশ্যই এটি কোনও প্রো পক্ষে খুব বেশি সহায়ক হবে না তবে সম্ভবত কোনও শিক্ষানবিস টিপটির প্রশংসা করতে পারে! এটি বলেছে যে সহজতম উপায়টি সত্যই উপরের ম্যাথ-অ্যাথস (-৩) হিসাবে ম্যাথের উপরে আলোচনা করা হয়েছে bsআবসগুলি কোনও মানকে ধনাত্মক করে তোলে। তারপরে নেতিবাচক উপসর্গ এটি নেতিবাচক করে তোলে
অ্যাশ পেটিট

উত্সাহিত। ব্যক্তিগতভাবে আমি এই উত্তরটির প্রশংসা করি এবং এটি মূল্যবান বলে মনে করি। আপনি যে কারও কাছ থেকে শিখতে পারেন।
জেরেমসোয়াইজুল

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

ফলাফল: -10

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

ফলাফল: 10

যদি আপনি negativeণাত্মক 1 দ্বারা ভাগ করেন তবে এটি সর্বদা আপনার নম্বরটি যে কোনও উপায়ে ফ্লিপ করবে।


3

জাভাস্ক্রিপ্ট এর জন্য একটি ডেডিকেটেড অপারেটর রয়েছে: অচেনা অবহেলা

টিএল; ডিআর: এটি বিয়োগ চিহ্ন!

একটি সংখ্যার অবহেলা করার জন্য, -খুব স্বজ্ঞাতভাবে এটি সম্ভবত উপসর্গ করুন । কোনও ফাংশন লেখার দরকার নেই, বা গুণমান বিটওয়্যার অপারেটর 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

এটি নেতিবাচক অ্যারেটিকে ইতিবাচক বা বিপরীতে রূপান্তর করবে

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

0

ভ্যানিলা জাভাস্ক্রিপ্টে

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

যেখানে নম্বরউপরের রূপান্তর করতে চান তা ইতিবাচক সংখ্যা

এই কোডটি কেবল ধনাত্মক সংখ্যাকে নেতিবাচক সংখ্যাকে সাধারণ -1 দ্বারা গুণিত করে রূপান্তর করবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.