我想将'189.46'舍入到189.5
如果我们以数字作为字符串开头,这是一个例子。有人可以告诉我为什么我的方法不起作用以及正确的方法是什么?
Math.round(parseFloat('189.46')).toFixed(1);
答案 0 :(得分:1)
将数字乘以10并舍入(使用提供的189.46 - 这将给出1895),然后除以10以返回十进制数(在此示例中为189.5)。
假设你要求它从输入中取一个值 - 而不是硬编码的字符串/数字 - 我提供了一个输入来输入值和一个触发click事件的舍入功能的按钮。
我还刚刚进行了一个小的基本数字检查以确保输入的值是一个数字(注意所有输入都会产生一个字符串)但是在使用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>
答案 1 :(得分:0)
JavaScript的Math对象提供了一种舍入为整数的方法。
舍入到小数位的最常见解决方案之一是使用... Number.prototype.toFixed()
所以......试试这个: `
var x = '189.46';
var k = parseFloat(x).toFixed(1); //k = 189.5
var y = parseFloat(k); //y = 189.5
//typeof(k) = string
//typeof(y) = number
`