<html> <script> function fahrenheitToCelcius(temp) { return (parseFloat(temp) - 32) * (5 / 9); } function isNumber(value) { return typeof (value) != "boolean" && !isNaN(value) && value.length > 0; } function minMaxTemp(value, min, max, unit) { console.log("function called"); if (value.length == 0 || value == "-") return value; if (!isNumber(value)) return value.substring(0, value.length - 1); if (unit == 1) value = fahrenheitToCelcius(value); if (parseFloat(value) < min) return min; else if (parseFloat(value) > max) return max; else return value; } </script> <table class="center"> <tr> <th>Setpoint</th> <th><input id="setPoint" type="text" name="setPoint" value="4" onkeyup="this.value = minMaxTemp(this.value, -80, 150, 0)" /></th> </tr> </table> </html>Dependiendo de si desea redondear hacia abajo o hacia arriba, puede usar Math.floor() o Math.ceil() .
<th><input id="setPoint" type="text" name="setPoint" value="4" onkeyup="this.value = Math.floor(minMaxTemp(this.value, -80, 150, 0))" /></th>Documentos de MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
Dado que, según su resultado esperado, parece que desea que los números decimales se redondeen hacia abajo, recomendaría usar la función Math.floor de JavaScript para redondear el valor al entero más cercano.
es decir
Math.floor(3.712)devolverá el valor 3