2017-04-02 26 views
2

我想將'189.46'修改爲189.5javascript:我如何將一個數字舍入到最接近的10美分?

下面是一個以數字開頭的例子。有人可以告訴我爲什麼我的方法不工作,以及正確的方法是什麼?

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

'Math.round(val * 10)/ 10' – Kaiido

+1

只需使用'.toFixed(1)'而不需要'Math.round'。如果您計劃將其顯示爲貨幣值,可以附加一個「0」。 – Siguza

回答

1

乘以10和一輪的數目(使用提供的189.46 - 這會給1895),然後除以10,返回到十進制數(在本例189.5)。

假設您要求此功能從輸入中獲取值 - 而不是硬編碼的字符串/數字 - 我提供了一個輸入以輸入該值,並在click事件中觸發舍入功能的按鈕。

我也只是在一個小的基本數字檢查,以確保輸入的值是一個數字(請注意,所有輸入將產生一個字符串),但檢查簡單如果一個數字已被放入 - 解析後使用parseFloat - 將其乘以1並將新值與輸入值進行比較 - 如果不相同 - 則不是數字。

我也突然出現在清除文字描述以及的方法,當一個新的值將被輸入到輸入框 - 絕對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>

0

JavaScript的數學對象提供了一個四捨五入到整數的方法。

一個四捨五入到小數位最常見的解決方案是使用... 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 

`

相關問題