জাভাস্ক্রিপ্টে নেতিবাচক সংখ্যাকে ধনাত্মক একে রূপান্তর করুন


308

জাভাস্ক্রিপ্টে এমন কোনও গণিতের ফাংশন রয়েছে যা সংখ্যাকে ধনাত্মক মানে রূপান্তর করে?

উত্তর:


703

আপনি এটি ব্যবহার করতে পারেন ...

Math.abs(x)

Math​.abs()| MDN


1
আপনি এমনকি + x + 1 বিবেচনা করতে চাইতে পারেন। এটি বেশ দ্রুত, তবে এটি কী করছে তা পরিষ্কার নয়। পার্থক্যটি দেখানোর জন্য এটি হিপড করা হয়েছে: jsperf.com/absolve-int
ওমগাজ

22
@ ওমগাজ তারা এক নয় ... var x = -100; ~x+1 === 100তবে var x = 100; ~x+1 === -100Math.absকেবলমাত্র পরিপূরকটি সাইন ইনভার্ট করে নিলে সর্বদা এটি ইতিবাচক হয়।
jduncanator

আপনি এমনকি -x বিবেচনা করতে চাইতে পারেন। এটা বেশ দ্রুত!
আমারা

93

কি হবে x *= -1? আমি এর সরলতা পছন্দ করি।


17
এটি সহজ হলেও, এটি অনুমান করে যে সংখ্যাটি সর্বদা নেতিবাচক থাকবে। যদি ব্যবহারের কেসটি এমন হয় তবে তা দুর্দান্ত। অন্যথায়, আমি সতর্কতার পরামর্শ দেব।
মায়ুসুফ

4
আমি @ মাইসুফকে একমত নই যে কোনও নম্বর xউল্টানো হবে। যদি x = 23এবং সেই সমীকরণে প্রসারিত হয় xতবে সমান হবে -23। মিঃ এসকালান্টের কথায়, "একটি ইতিবাচক সময় নেতিবাচক সমান হয়। একটি নেতিবাচক বার নেতিবাচক সমান হিসাবে ধনাত্মক হয়।" ... "আমি এই কীইআইইআইইডগুলি কীভাবে পৌঁছবো?!"
এক্সিলেন্ট

2
গতকাল ঠিক শ্যান @ যদি x=23, তবে এটি -23 হয়ে যাবে। প্রশ্নটি যেমন চলেছে, 'জেএসে একটি নেতিবাচক সংখ্যাকে ধনাত্মক সংখ্যায় রূপান্তর করুন', তবে উপরেরগুলি যে কোনও সংখ্যাকে উল্টে দেবে, তা ইতিবাচক বা নেতিবাচক হোক।
মায়ুসুফ

2
বুঝতে পারছিল না। আপনার মন্তব্যের আমার ব্যাখ্যাটি নম্বরটি উল্টানো এবং xসর্বদা ইতিবাচক না করার প্রসঙ্গে ছিল । আমার ক্ষমা @ মাইসুফ।
এক্সিলেন্ট

1
কেবল মনে করিয়ে দিন যে এই সমাধানটি ফ্লোট সংখ্যার জন্য প্রযোজ্য নয়, এটি কেবল দশমিক অংশ পায়
অস্কার লুজা

46

Math.abs(x)অথবা যদি আপনি নির্দিষ্ট মান ঋণাত্মক রূপান্তর মাত্র একটি নিয়মিত বিয়োগ চিহ্ন পূর্বে লিখুন হল: x = -x


29

বিয়োগ চিহ্ন (-) ইতিবাচক সংখ্যাগুলিকে নেতিবাচক সংখ্যায় এবং negativeণাত্মক সংখ্যাকে ধনাত্মক সংখ্যায় রূপান্তর করতে পারে। x=-yজন্য ভিজ্যুয়াল চিনি x=(y*-1)

var y = -100;
var x =- y;


12
var posNum = (num < 0) ? num * -1 : num; // if num is negative multiple by negative one ... 

আমি এই সমাধানটি বুঝতে সহজ মনে করি।


8

আপনি যদি আকর্ষণীয় কোডটি লিখতে চান যা অন্য কেউ কখনও আপডেট করতে পারে না, তবে চেষ্টা করে দেখুন:

~ --x


1
এটি যদিও ভাসমান পয়েন্টগুলির সাথে কাজ করবে না ... এবং x এর মানও পরিবর্তিত হবে।
অ্যালেক্সিস উইল্কে 24'14

আমি অনুমান করি আপনি যদি x: ~ --x; ++ x
কাইল

1
কাইল, ~অপারেটর নম্বরটি 32 বিট পূর্ণসংখ্যায় রূপান্তর করে। আপনার যদি ইনপুট হিসাবে একটি ভাসা থাকে, এটি হোসে যায়।
অ্যালেক্সিস উইলক

7

আমি জানি যে এটি কিছুটা দেরি হয়ে গেছে, তবে এর সাথে লড়াই করা লোকদের জন্য আপনি নিম্নলিখিত ফাংশনগুলি ব্যবহার করতে পারেন:

  • যেকোন সংখ্যাকে ইতিবাচক করুন

    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

6

ইতিবাচক থেকে নেতিবাচক

var X = -10 ;
var number = Math.abs(X);     //result 10

ইতিবাচক থেকে নেতিবাচক

var X = 10 ;
var number = (X)*(-1);       //result -10

আমি দেখতে চাই আপনি কী দেখাতে চান তবে আপনি এটি যেভাবে রেখেছেন তা বিভ্রান্তিকর। হতে পারে আপনার কথা বলা উচিত: ধনাত্মক: অ্যাবস ব্যবহার করুন, নেতিবাচক থেকে: অ্যাবস (এক্স) * -1। এইভাবে আপনি প্রাক্তন এক্স চিহ্নটি কী বোঝায় না।
ডায়নিস

5

(-1) দ্বারা গুণন করা negativeণাত্মক সংখ্যাকে ধনাত্মক রূপান্তরিত করার দ্রুততম উপায়। তবে আপনাকে আমার সতর্কতা অবলম্বন করতে হবে আমার ভুলটিকে ধনাত্মক সংখ্যাকে নেতিবাচক রূপে না রূপান্তর করতে! সুতরাং অতিরিক্ত চেক প্রয়োজন ...

তারপরে ম্যাথ.অ্যাবস, ম্যাথ.ফ্লুর এবং পার্সইন্ট সবচেয়ে ধীর।

এখানে চিত্র বর্ণনা লিখুন

https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1


1
আমাদের মধ্যে কেউ কেউ ভুলে যায় যে এই জাতীয় ক্ষেত্রে বেসিক গণিত কতটা কার্যকর হতে পারে। আমাকে এ জাতীয় সরলতার কথা মনে করিয়ে দেওয়ার জন্য ধন্যবাদ।
আলেকজান্ডার ডিকসন

2

আমি নিজেও এরকম কিছু করেছি।

num<0?num*=-1:'';

এটি নম্বরটি নেতিবাচক কিনা তা পরীক্ষা করে এবং এটি যদি হয় তবে -1 দিয়ে গুণ করুন এটি কোনও মান দেয়, এটি ক্যাপচার করে নিলে এটি আপনার পক্ষে to আপনি যদি এটি কোনও কিছুতে নির্ধারণ করতে চান তবে আপনার সম্ভবত এমন কিছু করা উচিত:

var out = num<0?num*=-1:num; //I think someone already mentioned this variant.

তবে এটি আপনার লক্ষ্য কী তা নির্ভর করে। আমার জন্য এটি সহজ ছিল, negativeণাত্মক হলে এটি ইতিবাচক করুন, অন্যথায় কিছু করবেন না। সুতরাং কোডে ''। এক্ষেত্রে আমি তৃতীয় অপারেটরের কারণটি ব্যবহার করতে চাইছিলাম, এটি খুব ভাল হতে পারে:

if(num<0)num*=-1;

আমি এখানে বিটওয়াইস সমাধানটি দেখেছি এবং সে সম্পর্কেও মন্তব্য করতে চেয়েছি।

~--num; //Drawback for this is that num original value will be reduced by 1

এই আত্মা আমার মতে খুব অভিনব, আমরা এটি আবার লিখতে পারি:

~(num = num-1);

সহজ কথায়, আমরা নেতিবাচক সংখ্যাটি নিয়ে থাকি, এটি থেকে একটি দূরে সরিয়ে নিয়ে তারপর কিছুটা উল্টিয়ে ফেলি। আমরা যদি সাধারণত বিটওয়াইসটি উল্টে থাকি তবে আমরা একটি মান খুব ছোট করে পাই। আপনি এটি করতে পারেন:

~num+1; //Wont change the actual num value, merely returns the new value

এটি একই কাজ করবে তবে প্রথমে উল্টে যাবে এবং তারপরে ইতিবাচক সংখ্যাটিতে 1 যুক্ত করবে। যদিও আপনি এটি করতে পারেন:

~num++; //Wont display the right value.

এটি অগ্রাধিকারের কারণ হিসাবে কাজ করবে না , যেমন পোস্টফিক্স অপারেটরগুলি num++before এর আগে মূল্যায়ন করা হবে এবং কারণ উপসর্গটি ++numবিটওয়াইন্ড নট (~) এর একই অগ্রাধিকারের পরেও কাজ করবে না, কারণ এটি ডান থেকে বামে মূল্যায়ন করা হয়। আমি তাদের চারপাশে অদলবদল করার চেষ্টা করেছি তবে মনে হয় বিটওয়াইজ নটের তুলনায় উপসর্গটি কিছুটা ফিনিकी। +1 কাজ করবে কারণ '+' এর উচ্চতর অগ্রাধিকার রয়েছে এবং পরে তা মূল্যায়ন করা হবে।

আমি সমাধানটি বরং মজাদার বলে খুঁজে পেয়েছি এবং এটি প্রসারিত করার সিদ্ধান্ত নিয়েছি কারণ এটি কেবল সেখানে ফেলে দেওয়া হয়েছিল এবং পোস্ট করা লোকেরা এটি সম্ভবত উপেক্ষা করছে। যদিও হ্যাঁ, এটি ভাসমানদের সাথে কাজ করবে না।

আমার আশা এই পোস্টটি মূল প্রশ্ন থেকে সরে যায় নি। : /



0

আপনি এমন ~ অপারেটর ব্যবহার করতে পারেন যা যৌক্তিকভাবে সংখ্যাকে negativeণাত্মক রূপান্তর করে এবং নেতিবাচকটিতে 1 যোগ করে:

var x = 3;
x = (~x + 1);
console.log(x)
// result = -3


0

আমি এটি করার অন্য একটি উপায় জানি। এই কৌশলটি ইতিবাচক ও খারাপ সংস্করণে নেতিবাচক কাজ করে

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);


যে প্রশ্নের উত্তর দেয় না। ডেভ একটি ফাংশন যে মান পরিবর্তন চায় ইতিবাচক নেতিবাচক এবং ইতিবাচক ইতিবাচক
রাফাফেক্স

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

প্রশ্নের নীচে একটি মন্তব্যে আপনি স্পষ্টতা জানতে চাইতে পারেন। যাইহোক, একটি স্বীকৃত উত্তর আছে যা সঠিক উত্তর। আপনি এটি আবার পড়তে পারেন এবং দেখতে পারেন যে একটি বিল্ট-ইন ফাংশন রয়েছে ... ইতিবাচককে ধনাত্মক রূপান্তরিত করে।
রাফাএমেক্স

0

একটি কার্যকরী প্রোগ্রামিংয়ের জন্য রমদা এর জন্য একটি দুর্দান্ত পদ্ধতি আছে। একই পদ্ধতিটি ইতিবাচক থেকে নেতিবাচক এবং বিপরীতে যেতে কাজ করে।

https://ramdajs.com/docs/#negate


0

আপনি যদি নম্বরটি সর্বদা ইতিবাচক হতে চান তবে আপনি এটি করতে পারেন তা বিবেচনা করুন।

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

এটির সাথে সমস্যাটি হ'ল আপনি সংখ্যাটি নেতিবাচক হিসাবে পরিবর্তন করতে পারেন, তারপরে স্ট্রিংয়ে রূপান্তর করতে এবং স্ট্রিং থেকে - অপসারণ করে তারপরে ইনটকে রূপান্তর করতে পারেন। আমি অনুমান করব যে আরও প্রসেসিং লাগবে তবে অন্য ফাংশনটি ব্যবহার করে।

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


দ্বিতীয় উদাহরণটি ইনপুট নম্বরটির আউটপুট দেয়। n*-nহওয়া উচিত n*-1। আমি উদাহরণটি পুরোপুরি সরিয়ে ফেলব, যদিও, প্রথম উদাহরণটির সরলতার তুলনায় টাইপ রূপান্তর এবং পদ্ধতি কলটি খুব অদক্ষ। এমনকি জেএসের উদ্দীপনা সম্ভবত এখানে সহায়তা করতে পারে না
গস্ট ভ্যান ডি ওয়াল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.