簡體   English   中英

在 JavaScript 中將負數轉換為正數

[英]Convert a negative number to a positive one in JavaScript

JavaScript 中是否有將數字轉換為正值的數學函數?

你可以用這個...

Math.abs(x)

Math​.abs() | MDN

x *= -1呢? 我喜歡它的簡單。

Math.abs(x)或者如果您確定該值在轉換前為負,只需在前面加上一個常規減號: x = -x

減號 (-) 可以將正數轉換為負數,將負數轉換為正數。 x=-yx=(y*-1)視覺糖。

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

我知道這有點晚了,但是對於為此苦苦掙扎的人,您可以使用以下功能:

  • 將任何數字變為正數

    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
unsigned_value = Math.abs(signed_value);
var posNum = (num < 0) ? num * -1 : num; // if num is negative multiple by negative one ... 

我發現這個解決方案很容易理解。

如果您想編寫其他人無法更新的有趣代碼,請嘗試以下操作:

~--x

乘以 (-1) 是將負數轉換為正數的最快方法。 但是你必須小心不要將我的錯誤從正數轉換為負數! 所以需要額外的檢查...

然后 Math.abs、Math.floor 和 parseInt 是最慢的。

在此處輸入圖片說明

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

負對正

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

正轉負

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

我自己做了這樣的事情。

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++后綴運算符將在 ~ 之前進行評估,並且即使它與按位 NOT(~) 具有相同的優先級,原因前綴++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

如果您希望數字始終為正數,無論您可以這樣做。

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

這樣做的問題是您可能將數字更改為負數,然后轉換為字符串並從字符串中刪除- ,然后轉換回 int。 我猜這需要更多的處理然后只使用其他函數。

我已經在 php 中測試過,第一個函數更快,但有時 JS 會做一些瘋狂的事情,所以我不能肯定地說。

我知道另一種方法。 這種技術對積極的消極和反之亦然

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

對於函數式編程,Ramda 有一個很好的方法。 同樣的方法從正面到負面,反之亦然。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM