Я хотел бы создать конвертер для этой диаграммы:
https://ww2.riogrande.com/content/brown-sharpe-gauge-thicknesses-cg-html
Я написал от cm до дюймовой части до трех знаков после запятой:
function LengthConvertermm(valNum) {
document.getElementById("inputinch")
.value=parseFloat(valNum*0.03937007874).toFixed(3);
}
Но на графике, чем выше измерение, тем ниже число калибра!
Как я могу создать эту часть кода? Я не могу разобраться, так как это не так просто, как умножение!
Как показано в Википедии, размеры калибровки математически четко определены.
Поэтому размеры калибра в дюймах и в мм легко вычисляются по калибровочному числу, а простая арифметика дает обратные результаты.
Обратите внимание, что я использовал результаты (не округленные) для результатов in и mm, так как таблица, с которой вы связаны, делала то же самое.
const gaugeToIn = n => 0.32486 * Math.pow(Math.E, -0.11594 * n);
const gaugeToMm = n => 8.25154 * Math.pow(Math.E, -0.11594 * n);
// Unused, but reverse operations as well
const inToGauge = n => Math.round(Math.log(n / 0.32486) / (-0.11594));
const mmToGauge = n => Math.round(Math.log(n / 8.25154) / (-0.11594));
// Used to display results
const write = msg => {
document.body.appendChild(document.createElement('p')).innerHTML = msg;
};
for (let gauge = 0; gauge < 35; gauge++) {
const flooredIn = gaugeToIn(gauge).toFixed(3);
const flooredMm = gaugeToMm(gauge).toFixed(3);
write('gauge ${gauge}: ${flooredIn} in / ${flooredMm} mm');
}
Пытаться
parseFloat(+valNum*0.03937007874)
Может быть, valNum
- строка;
function LengthConvertermm(valNum) {
document.getElementById("inputinch").value= 100 - parseFloat(valNum*0.03937007874).toFixed(3);
}
//Предполагая, что 100 - максимальное число