我需要使用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个小数的精度,也可以是全精度。
最佳答案
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
mirror
位于a
和b
之间的中间,因此:mirror = (a + b) / 2
我们希望镜像的
x
与mirror
具有相同的距离,但方向相反。距mirror
的距离为(x - mirror)
,我们可以将x
表示为mirror + (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
关于java - 在指定域之间镜像Java中的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17628620/