我的值在0到1之间,但是我需要将此值映射到0到0.5到0的范围内。例如0.4会给出0.4,但是0.8也会给出0.2。

0.1 = 0.1、0.2 = 0.2、0.3 = 0.3、0.4 = 0.4、0.5 = 0.5、0.6 = 0.4、0.7 = 0.3、0.8 = 0.2、0.9 = 0.1
我该如何实现?

最佳答案

如果其大于0.5,则将其减去1。1 - 0.9 = 0.1要摆脱条件,请使用Math.Min(x, 1 - x)。之所以有效,是因为:

0.1 = 0.1,
0.2 = 0.2,
0.3 = 0.3,
0.4 = 0.4,
0.5 = 0.5,
0.6 = 0.4,
0.7 = 0.3,
0.8 = 0.2,
0.9 = 0.1

注意:


该列表从[0,1]镜像到0.5
每行有两个数字,超过中点的每一行加1。


这就是Math.Min起作用的原因。输入,输出,都一样。您只想要两个数字中的最小值。因此,假设您从0.1开始。这是用0.9镜像的,并且这两个值都映射回0.1

10-08 20:27