2013-10-29 1 views
7

JavaScript 기능 toFixed(2)에 약간의 문제가 있습니다.toFixed를 사용한 10 진수 반올림

십진수 45.24859을 반올림하면이 함수를 사용하여 45.25이됩니다.

하지만 내 문제는, 내가 10 (십진수 부분이 없음)을 반올림하면이 함수는 십진수 10.00을 반환합니다.

어떻게이 문제를 해결할 수 있습니까?

내 문제는 소수 부분없이 숫자를 입력하면 함수가 10 진수가 아닌 값을 반환해야한다는 것입니다.

+0

중복 가능성 (http://stackoverflow.com/questions/11832914/round-up- to-2-decimal-places-in-javascript) – Sarath

+0

이것은 jQuery와는 아무런 관련이 없다는 점에 유의하십시오. –

답변

7

이 문제를 해결하는 또 다른 방법

DEMO 모든 브라우저와 호환되지 솔루션 아래

.indexOf()

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


. [스크립트의 소수점 이하 2 자리까지 반올림]의

또는

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

.contains()

+0

모두 작동하지 않습니다 .. – rplg

+0

@rplg 문제 확인을 지금 수정했습니다. –

+0

감사합니다 Tushar Gupta..now 그것이 작동합니다 .. – rplg

6

우리는 수를 확인할 수 있습니다 소수점 여부를이 Check if a number has a decimal...

그래서 당신이

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

가 아니면 더 나은 옵션을 사용하는 것입니다 생각이 기능을 사용할 수있는 결합 함께

Math.round(num * 100)/100 
+0

감사합니다 Sarath Saleem. 그것은 작동합니다. – rplg

+0

10.1에서 10.10까지의 경우를 처리하지 않았습니다. – bjb568

+0

10.1은 10.10입니다. ..? – Sarath