日期:2014-05-18  浏览次数:20878 次

新手急问。。。(高分相送,参与有分)
键值 100 120 160 180 200 …… 1450 1500
补偿值 0.2 0.3 0.4 0.3 0.3 …… 0.2 0.2
有一组数据对,如上表所示:
键值是递增的,补偿值是不固定的(这两个可以认为是数据库表中的两列)
现在要进行如下的操作,如果输入一个新的键值,则根据键值表中的值进行遍历查找,在某两个值之间,根据这两个值之间的线性关系求出输入值的补偿值.(如输入172,该值在160和180之间,根据线性关系,172的键值应该是(180-160)/(0.3-0.4)*(172-160))。


------解决方案--------------------

------解决方案--------------------
看都把我看晕了。你到底要问什么啊
------解决方案--------------------
将对应关系放在键值对(Dictionary<Key,Value>,HashTable等)中,根据输入的键值查找对应的值,再计算
------解决方案--------------------
比喻你的表为 mytab 2个列分别为 keyv 和 buv,要对比的数 是 inputv
 下面 你要的数是你的答案:
select (key1-key2)/(bu1-bu2*(inputv-key2)) as 你要的数 from 
(select min(keyv) as key1,min(buv) as bu1 from mytab where keyv>inputv) as tab1,
(select max(keyv) as key2,max(buv) as bu2 from mytab where keyv<inputv) as tab2


------解决方案--------------------

------解决方案--------------------
顶。
------解决方案--------------------
晕呼呼的.
------解决方案--------------------
mark
------解决方案--------------------
刚才写的可能有点不对 括号没答对地方 不过确实是正确的 (key1-key2)/(bu1-bu2*(inputv-key2)) 
改为:(key1-key2)/(bu1-bu2)*(inputv-key2)
------解决方案--------------------
yun la ,继续关注!
------解决方案--------------------
其实就是一个简单的数学问题。用哈希表将现有的数据存储,KEY对应你的键值,Value对应你的补偿值。之后比较输入的172(或其他数),在你的哈希表中找到对应的两个相邻KEY,当然也得到对应的补偿值。再用你的计算公式一算就得到了补偿值了。
------解决方案--------------------
随便问一句,你给的格式不是会产生除0异常的么

比如 190
------解决方案--------------------
先从数据库里找出大于输入数(设为n)的最小键值(假设为maxKey,其对应的补偿值为maxValue)和小于输入数的最大键值(假设为minKey,其对应的补偿值为minValue)。。。
计算的公式应该是:(n-minKey)*(maxValue-minValue)/(maxKey-minKey)+minKey;
如求172的补偿值:(172-160)*(0.3-0.4)/(180-160)+0.4=0.34;
------解决方案--------------------
关注
------解决方案--------------------
探讨
先从数据库里找出大于输入数(设为n)的最小键值(假设为maxKey,其对应的补偿值为maxValue)和小于输入数的最大键值(假设为minKey,其对应的补偿值为minValue)。。。
计算的公式应该是:(n-minKey)*(maxValue-minValue)/(maxKey-minKey)+minKey;
如求172的补偿值:(172-160)*(0.3-0.4)/(180-160)+0.4=0.34;

------解决方案--------------------
排队接分
------解决方案--------------------
看那么多数字就晕了
------解决方案--------------------
学习了。

------解决方案--------------------
从数据库中拿出来,放到hashtable里,判断,运算。。。
------解决方案--------------------
嗯,用哈希表吧~
------解决方案--------------------
探讨
先从数据库里找出大于输入数(设为n)的最小键值(假设为maxKey,其对应的补偿值为maxValue)和小于输入数的最大键值(假设为minKey,其对应的补偿值为minValue)。。。
计算的公式应该是:(n-minKey)*(maxValue-minValue)/(maxKey-minKey)+minKey;
如求172的补偿值:(172-160)*(0.3-0.4)/(180-160)+0.4=0.34;