Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于区间单位变换的一个小小小问题 #9

Open
zuluoaaa opened this issue Nov 12, 2020 · 0 comments
Open

关于区间单位变换的一个小小小问题 #9

zuluoaaa opened this issue Nov 12, 2020 · 0 comments

Comments

@zuluoaaa
Copy link
Owner

zuluoaaa commented Nov 12, 2020

由于本人数学菜的抠脚,在日常工作中遇到的一个关于百分比换算的问题。

最开始想的时候觉得挺简单的,打算写成函数调用的时候,居然无法立刻写出来,经过一番思考后方才写了出来。

代码是写出来了,感觉理不顺,随尝试用文字写出来,便于自己更好的理解。

假设存在一个区间范围数(例如5-15),我们想把这个区间数转换成设定好的区间百分比(例如0.4~0.8)。

最大区间值15转换后变成0.8,最小区间值5转换后变成0.4.

思考过程:

把5 ~ 15的区间数想象成一个直线,要把它映射到另外一条直线上并且一一对应。

第一步,先化简,先把5 ~ 15和0.4 ~ 0.8归零处理,即最大值减去最小值,变成0 ~ 10和0 ~ 0.4;经过这么一步的处理,突然就变得简单起来了

要做的就是把0 ~ 10映射到0 ~ 0.4,那还不简单,获取输入数的当前百分比再乘以0.4就搞定了。。。。最后再加上最小值,整个换算就完成了。。。。。
PS:输入的值也需要进行归零处理

const MAX_PERCENT_VALUE = 0.8;
const MIN_PERCENT_VALUE = 0.4;

const  IS_TRANSPARENCE_MIN = 5;
const  IS_TRANSPARENCE_MAX = 15;

function transform(diffVal) {
    return (diffVal - IS_TRANSPARENCE_MIN)/(IS_TRANSPARENCE_MAX-IS_TRANSPARENCE_MIN) * (MAX_PERCENT_VALUE-MIN_PERCENT_VALUE) + MIN_PERCENT_VALUE
}

console.log(transform(5))  // 0.4
console.log(transform(6))  // 0.44
console.log(transform(7))  // 0.48
console.log(transform(15)) // 0.8

最后总结,其实跟随机数取区间范围是一个原理,但是换了个方式出现我就突然转不出来了,尴尬(─.─|||)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant