// 即:如果已知第一组数据是高度X mm,体积为Y升.
// 那么0 - Xmm 这一段的计算公式为:
// V=高度为(n-1)mm对应的体积 + 高度为n时的间隔容积与第一个间隔容积比值 / 高度为(0至Xmm)所有间隔容积与第一个间隔容积比值之和 * Y
const dt = []
/**
* 计算流程
* @param {*} h 输入 高度
* @param {*} Y 输入 体积
*/
function run(start, h, Y) {
console.log('{', start, h, Y, '}')
let item = null
const n = h - 1 // 输入值 默认 - 1(数组索引)
const s = sum(start, h) // 高度为(0至Xmm)所有间隔容积与第一个间隔容积比值之和
for (let i = start; i <= h; i++) {
const b = parseFloat(d[i - 1][1]) // 高度为n时的间隔容积与第一个间隔容积比值
// 1nm V = rv + 1.000 / 285.36 * 713
// 这里是计算公式 ↓
let rv = 0
if (i > 1) {
rv = parseFloat(dt[i - 1 - 1][1])
}
const V = rv + b / s * parseFloat(Y)
item = [i, V.toFixed(2), b]
dt.push(item)
console.log(`${i}\t\t${V.toFixed(2)}\t\t${b}`)
}
return item
}
/**
* 计算 0 - n 范围比值和
* @param {*} n 范围
*/
function sum(start, n) {
let s = 0
for (let i = start - 1; i < n; i++) {
s += parseFloat(d[i][1])
}
return s
}
var g = []
var res = {}
var max = 0
function add() {
var h = document.getElementById('h')
var y = document.getElementById('y')
if (h.value === '' || isNaN(h.value) || y.value === '' || isNaN(y.value)) {
return alert('请输入正确的数据')
}
g.push([h.value, y.value])
h.value = ''
y.value = ''
}
function runner() {
for (var i = 0, l = g.length; i < l; i++) {
grup(max === 0 ? 1 : max + 1, g[i])
max = Math.max(g[i][0], max)
}
var str = dt.map(i => '<tr><td>' + i.join('</td><td>') + '</td><tr>').join('')
document.getElementById('tbody').innerHTML = str
}
function grup(begin, item) {
var res = []
res[begin + '-' + item[0]] = run(begin, item[0], item[1])
}
</script>