使用toFixed舍入十进制数

时间:2013-10-29 06:28:47

标签: javascript rounding

JavaScript函数toFixed(2)存在小问题。

如果我将此十进制数45.24859四舍五入,我会使用此函数获得45.25

但我的问题是,如果我绕10(它没有小数部分),该函数将返回一个十进制数10.00

如何解决此问题?

我的问题是,如果输入一个没有小数部分的数字,该函数应该返回一个非十进制数字。

2 个答案:

答案 0 :(得分:7)

解决此问题的另一种方法

DEMO

.indexOf()

function roundNumber(num){
   return (num.toString().indexOf(".") !== -1) ? num.toFixed(2) : num;
}

<小时/> 以下解决方案与所有浏览器不兼容。

<击> 或

<击>
function roundNumber(num){
   return (num.toString().contains(".")) ? num.toFixed(2) : num;
}

<击> .contains()

答案 1 :(得分:6)

我们可以使用此Check if a number has a decimal...

检查数字是否为小数

结合你可以使用这个功能

function roundNumber(num){
   return num % 1 != 0 ? num.toFixed(2) : num;
}

或者我认为更好的选择是使用

Math.round(num * 100) / 100