소수점 이하 2 자리까지 부동 소수점을 표시하는 JavaScript


315

소수점 이하 두 자리까지 숫자를 표시하고 싶었습니다.

toPrecision(2)JavaScript에서 사용할 수 있다고 생각했습니다 .

그러나 숫자가 0.05인 경우을 얻습니다 0.0500. 차라리 그대로 유지하고 싶습니다.

JSbin에서 참조하십시오 .

가장 좋은 방법은 무엇입니까?

몇 가지 솔루션을 코딩하는 것을 생각할 수 있지만 이와 같은 것이 내장되어 있다고 생각합니까?

답변:


559
float_num.toFixed(2);

참고 :toFixed() 필요한 경우 지정된 길이를 충족하기 위해 반올림하거나 0으로 채 웁니다.


61
그러나 float가 아닌 문자열을 반환합니다!
Anwar

38
질문 작성자는 "표시"를 원하므로 문자열이 완벽합니다
Christophe Marois

7
그리고 parseFloat (float_num.toFixed (2))를 사용하면 소수점 이하 두 자리 만 유지하면서 문자열을 다시 부동 소수점으로 변환 할 수 있습니다.
Hankrecords

3
@anwar는 플로트를 안정적으로 둥글게 할 수 없습니다 (물론 플로트를 둥글게 할 수 있습니다)-0.0500 또는 0.0500000000001과 같은 것을 얻을 수 있습니다. floating-point-gui.de
jmc를

2
@Hankrecords 당신이 말한 것은 사실이 아닙니다. '43 .01 '이 있고 구문 분석을하면 43.01이 표시되지만 '43 .10'이 있으면 43.1이 표시됩니다.
Lucian Tarna



14

내가이 질문에 어떻게 도달했는지 모르지만 이것이 요청 된 지 몇 년이 지난 후에도 빠르고 간단한 방법을 추가하고 싶습니다.

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );

1
parseFloat()거기? 숫자가 문자열에서 나오는 경우에만 사용해야합니다.
alex

3
경우에 따라 요소에서 jquery와 함께 "data-"속성 값을 얻는 경우 toFixed 만 사용하면 오류가 발생합니다. parseFloat가 수정합니다.
panos

2
, 그것이 문자열에서 온 경우 위의 의미 입니다. 그러나 그것을 사용하는 것은 항상 나쁜 조언입니다.
alex


8

number.parseFloat(2) 작동하지만 문자열을 반환합니다.

숫자 유형으로 유지하려면 다음을 사용할 수 있습니다.

Math.round(number * 100) / 100


4

당신은 혼합을 시도 할 수 Number()toFixed().

대상 번호를 X 자릿수가있는 멋진 문자열로 변환 한 다음 형식화 된 문자열을 숫자로 변환하십시오.

Number( (myVar).toFixed(2) )


아래 예를 참조하십시오.

var myNumber = 5.01;
var multiplier = 5;
$('#actionButton').on('click', function() {
  $('#message').text( myNumber * multiplier );
});

$('#actionButton2').on('click', function() {
  $('#message').text( Number( (myNumber * multiplier).toFixed(2) ) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button id="actionButton">Weird numbers</button>
<button id="actionButton2">Nice numbers</button>

<div id="message"></div>


좋은 참조 감사합니다.
Arman H

1

toFixed()방법은 고정 소수점 표기법을 사용하여 숫자를 형식화합니다.

그리고 여기 구문이 있습니다

numObj.toFixed([digits])

자리 인수는 선택 사항이며 기본적으로 0입니다. 반환 유형은 숫자가 아닌 문자열입니다. 그러나 당신은 그것을 사용하여 숫자로 변환 할 수 있습니다

numObj.toFixed([digits]) * 1

또한 다음과 같은 예외를 던질 수 있습니다 TypeError.RangeError

브라우저의 자세한 내용 과 호환성 은 다음과 같습니다 .



-1

이 기능을 만들었습니다. 잘 작동하지만 문자열을 반환합니다.

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.