2015-08-26 113 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