我想将“189.46”四舍五入为 189.5
这是一个示例,如果我们以字符串形式开始数字。谁能告诉我为什么我的方法不起作用以及正确的方法是什么?
Math.round(parseFloat('189.46')).toFixed(1);
最佳答案
将数字乘以 10 并四舍五入(使用提供的 189.46 - 这将得到 1895),然后除以 10 以返回十进制数(在本例中为 189.5)。
假设您要求它从输入中获取一个值 - 而不是硬编码的字符串/数字 - 我提供了一个用于输入值的输入和一个在点击事件时触发舍入功能的按钮。
我也刚刚进行了一个小的基本数字检查,以确保输入的值是一个数字(注意所有输入都会产生一个字符串),但只是检查是否输入了一个数字 - 在使用 parseFloat 解析它之后- 将它乘以 1 并将新值与输入值进行比较 - 如果不相同 - 它不是数字。
我还弹出了一个清除文本描述的方法,以及当要在输入框中输入新值时 - jus cos' :)
function roundNumber(){
var num = parseFloat(document.getElementById('numberInput').value);
if(num * 1 !== num) {
document.getElementById('numberDisplay').innerText = 'Not a Valid Number - try again';
document.getElementById('numberInput').value = '';
} else {
var numRounded = (Math.round(num*10)/10).toFixed(1);
document.getElementById('numberDisplay').innerText = 'Rounded number: '+ numRounded;
}
}
function clearText(){
document.getElementById('numberInput').value = '';
document.getElementById('numberDisplay').innerText = '';
}
<input type="text" id="numberInput" onclick="clearText()"/>
<button type = "button" id="inputButton" onclick="roundNumber()">Round Value</button>
<p id = "numberDisplay"><p>
关于javascript:如何将数字四舍五入到最接近的 10 美分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43164228/