2015-08-26 157 views
0

.toFixed(2)即使數字是2.00,我也總是得到2位小數有最大。 2位小數

我可以得到「2」嗎?

實施例:

  • 2.00 => 2
  • 2.05 => 2.05
  • 2.053435 => 2.05
  • 2.057435 => 2.06
+2

可能重複[回合在JavaScript中最多2位小數(http://stackoverflow.com/questions/11832914/round-to-at-most -2-decimal-places-in-javascript) – Vucko

+0

但是這也意味着我使用toFixed(2),它不工作就像我想 – Elfy

+0

那麼使用腳本從最投票的答案?這裏的[你的榜樣(http://jsfiddle.net/af3qg9bc/) – Vucko

回答

3

function toFixedIfNecessary(value, dp){ 
 
    return +parseFloat(value).toFixed(dp); 
 
} 
 

 
console.log(toFixedIfNecessary(1.999, 2)); // 2 
 
console.log(toFixedIfNecessary(2, 2));  // 2 
 
console.log(toFixedIfNecessary(2.1, 2));  // 2.1 
 
console.log(toFixedIfNecessary(2.05, 2));  // 2.05 
 
console.log(toFixedIfNecessary(2.05342, 2)); // 2.05 
 
console.log(toFixedIfNecessary(2.04999, 2)); // 2.05 
 
console.log(toFixedIfNecessary(2.04499, 2)); // 2.04 
 
console.log(toFixedIfNecessary(2.053435, 2)); // 2.05 
 
console.log(toFixedIfNecessary(2.057435, 2)); // 2.06

+0

這是什麼問題?有人可以解釋爲什麼+ parseFloat有這種行爲? – homebrand

1

可以使用Math.round()

var number = 2.005; 
 
var number2 = 2.558934; 
 
var number3 = 1.005; 
 

 
function round(value, decimals) { 
 
    return Number(Math.round(value+'e'+decimals)+'e-'+decimals); 
 
} 
 

 
console.log(round(number, 2)) // > 2.01 
 
console.log(round(number2, 2)) // > 2.56 
 
console.log(round(number3, 2)) // > 1.01

+0

'Math.round(1.005 * 100)/ 100'返回'1' – MT0

+1

它應該返回1,因爲我們想要最大的2位小數,但如果你輸入1.05它將返回1.05,或者如果我們輸入1.051264它將返回1.05 –

+0

@NevenIgnjic'1.005'到2DP是'1.01'不'1' – MT0