0

我需要用 Java 语言制作一个已知域(边界是代数数)的镜像。

域在这两个数字之间,其中 50 是镜像(必须排除 50,50 = 50)!镜像需要在两个方向上(参见示例)。

0 ________ 50 ________ 100

我想要实现的是这个

例如:

double x = 20; //x is my input number
double mirrorX = newnumber_mirrored; //mirrorX is the number mirrored in the specified domain, so if the x is 20, the output must be 80.

//other examples:
//input x = 45, output = 55
//input x = 48, output = 52
//input x = 50, output = 50
//input x = 50.1, output = 49.9
//input x = 67.4, output 32.6

我怎样才能在 Java 中实现这一点?可以是 1 位或 2 位小数的精度,也可以是完全精度。

4

1 回答 1

5
double x = 20; //x is my input number
double mirrorX = 100 - x;

或者,一般来说,对于域a... b

double x = 45;
double a = 30;
double b = 100;
double mirrorX = (a + b) - x; // => 85

如何到那:

我们的号码是这样排列的:

a             mirror      x      b

mirrora在和之间b,所以:mirror = (a + b) / 2

我们希望镜像x与 具有相同的距离mirror,但在另一个方向。mirror到的距离(x - mirror),我们可以表示xmirror + (x - mirror)。改变方向导致mirror - (x - mirror),我们想要的结果,现在可以转换:

x_mirrored = mirror - (x - mirror)
x_mirrored = mirror - x + mirror
x_mirrored = 2 * mirror - x
x_mirrored = 2 * ((a + b) / 2) - x
x_mirrored = (a + b) - x
于 2013-07-13T09:04:03.930 回答