[英]Convert a negative number to a positive one in JavaScript
JavaScript 中是否有将数字转换为正值的数学函数?
x *= -1
呢? 我喜欢它的简单。
Math.abs(x)
或者如果您确定该值在转换前为负,只需在前面加上一个常规减号: x = -x
。
减号 (-) 可以将正数转换为负数,将负数转换为正数。 x=-y
是x=(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 有一个很好的方法。 同样的方法从正面到负面,反之亦然。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.