首页 > 解决方案 > 将一个数字的符号赋予另一个数字?

问题描述

我正在寻找一种简洁的方法来获取一个数字的符号(正或负),并将其传递给另一个数字。

例如:

我们得到两个数字,第一个是整数 1,第二个直到执行时才知道。
如果未知数小于0,我们的数就变成-1。
如果未知数大于等于0,我们的数就变成1。

如果我们的未知数是 X:


在此处输入图像描述

作为代码:

int before = AnyNonzeroInt(); //for this example we will choose 1.
int X = rand(Int32.Min, Int32.Max);
int after = ...

我个人使用的是 C# 4.5,但我相信一个好的解决方案是与语言无关的。

我可以想到几种方法,但都涉及 if-else-case 语句或三元运算符。我想要一种数学方法。

编辑:

我对三元运算符没有反感。但是,我正在处理的代码库有一组代码指南,不允许使用三元运算符,因为它们被认为会使代码更复杂(我知道我知道......我没有制定这个规则)。

但是,我确实相信我会在下一次团队会议上回答这个问题以及它的答案,这样我就可以表明我认为三元运算符是多么必要。

标签: c#math

解决方案


var after = (X < 0) ? -1 : 1;

这比一个部门便宜,你的意图也更清楚


推荐阅读