Open zuluoaaa opened 4 years ago
由于本人数学菜的抠脚,在日常工作中遇到的一个关于百分比换算的问题。
最开始想的时候觉得挺简单的,打算写成函数调用的时候,居然无法立刻写出来,经过一番思考后方才写了出来。
代码是写出来了,感觉理不顺,随尝试用文字写出来,便于自己更好的理解。
假设存在一个区间范围数(例如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
最后总结,其实跟随机数取区间范围是一个原理,但是换了个方式出现我就突然转不出来了,尴尬(─.─|||)
由于本人数学菜的抠脚,在日常工作中遇到的一个关于百分比换算的问题。
最开始想的时候觉得挺简单的,打算写成函数调用的时候,居然无法立刻写出来,经过一番思考后方才写了出来。
代码是写出来了,感觉理不顺,随尝试用文字写出来,便于自己更好的理解。
假设存在一个区间范围数(例如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:输入的值也需要进行归零处理
最后总结,其实跟随机数取区间范围是一个原理,但是换了个方式出现我就突然转不出来了,尴尬(─.─|||)