新手急问。。。(高分相送,参与有分)
键值100120160180200……14501500
补偿值0.20.30.40.30.3……0.20.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;
[解决办法]
关注
[解决办法]