javascript:如何将数字舍入到最接近的10美分?

时间:2017-04-02 03:12:29

标签: javascript

我想将'189.46'舍入到189.5

如果我们以数字作为字符串开头,这是一个例子。有人可以告诉我为什么我的方法不起作用以及正确的方法是什么?

Math.round(parseFloat('189.46')).toFixed(1);

2 个答案:

答案 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

`