在JavaScript中将负数转换为正数

2020/10/03 03:21 · javascript ·  · 0评论

JavaScript中是否存在将数字转换为正值的数学函数?

你可以用这个...

Math.abs(x)

Math​.abs()| MDN

x *= -1我喜欢它的简单性。

Math.abs(x)或者,如果您确定转换前的值是负数,只需在前面加上一个常规的减号:x = -x

减号(-)可以将正数转换为负数,并将负数转换为正数。x=-y是视觉糖x=(y*-1)

var y = -100;
var x =- y;
unsigned_value = Math.abs(signed_value);
var posNum = (num < 0) ? num * -1 : num; // if num is negative multiple by negative one ... 

我发现此解决方案易于理解。

我知道这有点晚了,但是对于那些为此感到挣扎的人,可以使用以下功能:

  • 将任何数字转为正数

    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
    

如果您想编写有趣的代码,其他任何人都无法更新,请尝试以下操作:

〜--x

负向正

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,即使它是在相同的优先级按位难道不工作NOT(〜),是因为它是从右向左计算。我确实尝试过交换它们,但与按位NOT相比,前缀似乎有点挑剔。+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);

对于函数式编程,Ramda为此提供了一种不错的方法。从正到负,反之亦然。

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

如果您希望数字始终为正,那么无论如何都可以执行此操作。

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会做一些疯狂的事情,所以我不能肯定地说。

本文地址:http://javascript.askforanswer.com/zaijavascriptzhongjiangfushuzhuanhuanweizhengshu.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!