উত্তর:
var x = -100; ~x+1 === 100তবে var x = 100; ~x+1 === -100। Math.absকেবলমাত্র পরিপূরকটি সাইন ইনভার্ট করে নিলে সর্বদা এটি ইতিবাচক হয়।
কি হবে x *= -1? আমি এর সরলতা পছন্দ করি।
xউল্টানো হবে। যদি x = 23এবং সেই সমীকরণে প্রসারিত হয় xতবে সমান হবে -23। মিঃ এসকালান্টের কথায়, "একটি ইতিবাচক সময় নেতিবাচক সমান হয়। একটি নেতিবাচক বার নেতিবাচক সমান হিসাবে ধনাত্মক হয়।" ... "আমি এই কীইআইইআইইডগুলি কীভাবে পৌঁছবো?!"
x=23, তবে এটি -23 হয়ে যাবে। প্রশ্নটি যেমন চলেছে, 'জেএসে একটি নেতিবাচক সংখ্যাকে ধনাত্মক সংখ্যায় রূপান্তর করুন', তবে উপরেরগুলি যে কোনও সংখ্যাকে উল্টে দেবে, তা ইতিবাচক বা নেতিবাচক হোক।
xসর্বদা ইতিবাচক না করার প্রসঙ্গে ছিল । আমার ক্ষমা @ মাইসুফ।
বিয়োগ চিহ্ন (-) ইতিবাচক সংখ্যাগুলিকে নেতিবাচক সংখ্যায় এবং negativeণাত্মক সংখ্যাকে ধনাত্মক সংখ্যায় রূপান্তর করতে পারে। 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) দ্বারা গুণন করা negativeণাত্মক সংখ্যাকে ধনাত্মক রূপান্তরিত করার দ্রুততম উপায়। তবে আপনাকে আমার সতর্কতা অবলম্বন করতে হবে আমার ভুলটিকে ধনাত্মক সংখ্যাকে নেতিবাচক রূপে না রূপান্তর করতে! সুতরাং অতিরিক্ত চেক প্রয়োজন ...
তারপরে ম্যাথ.অ্যাবস, ম্যাথ.ফ্লুর এবং পার্সইন্ট সবচেয়ে ধীর।
https://jsperf.com/test-parseint-and-math-floor-and-mathabs/1
আমি নিজেও এরকম কিছু করেছি।
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 কাজ করবে কারণ '+' এর উচ্চতর অগ্রাধিকার রয়েছে এবং পরে তা মূল্যায়ন করা হবে।
আমি সমাধানটি বরং মজাদার বলে খুঁজে পেয়েছি এবং এটি প্রসারিত করার সিদ্ধান্ত নিয়েছি কারণ এটি কেবল সেখানে ফেলে দেওয়া হয়েছিল এবং পোস্ট করা লোকেরা এটি সম্ভবত উপেক্ষা করছে। যদিও হ্যাঁ, এটি ভাসমানদের সাথে কাজ করবে না।
আমার আশা এই পোস্টটি মূল প্রশ্ন থেকে সরে যায় নি। : /
আমার ন্যূনতম পদ্ধতির
Negativeণাত্মক সংখ্যাকে ধনাত্মক ও তদ্বিপরীতে রূপান্তর করার জন্য
var num = -24;
num -= num*2;
console.log(num)
// result = 24
আপনি এমন ~ অপারেটর ব্যবহার করতে পারেন যা যৌক্তিকভাবে সংখ্যাকে negativeণাত্মক রূপান্তর করে এবং নেতিবাচকটিতে 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
এটির সাথে সমস্যাটি হ'ল আপনি সংখ্যাটি নেতিবাচক হিসাবে পরিবর্তন করতে পারেন, তারপরে স্ট্রিংয়ে রূপান্তর করতে এবং স্ট্রিং থেকে - অপসারণ করে তারপরে ইনটকে রূপান্তর করতে পারেন। আমি অনুমান করব যে আরও প্রসেসিং লাগবে তবে অন্য ফাংশনটি ব্যবহার করে।
আমি এটি পিএইচপিতে পরীক্ষা করেছি এবং প্রথম ফাংশনটি দ্রুততর হয় তবে কখনও কখনও জেএস কিছু ক্রেজি কাজ করে, তাই আমি নিশ্চিতভাবে বলতে পারি না।
n*-nহওয়া উচিত n*-1। আমি উদাহরণটি পুরোপুরি সরিয়ে ফেলব, যদিও, প্রথম উদাহরণটির সরলতার তুলনায় টাইপ রূপান্তর এবং পদ্ধতি কলটি খুব অদক্ষ। এমনকি জেএসের উদ্দীপনা সম্ভবত এখানে সহায়তা করতে পারে না