[javascript] 숫자를 쉼표 뒤 2 자리로 반올림

어떻게 해야할지 모르겠어요? 나는 쉼표 번호를 추가하고 있는데, 결과는 물론 항상 쉼표 뒤에 너무 많은 자릿수가있는 숫자입니다. 누군가?



답변

편집 2 :

다음과 같이 Number개체의 toFixed메서드를 사용합니다 .

var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roudedString); // toFixed() returns a string (often suitable for printing already)

42.0054321에서 42.01로 반올림됩니다.

0.005에서 0.01로 반올림합니다.

-0.005를 -0.01로 반올림합니다 (따라서 .5 경계에서 반올림 할 때 절대 값이 증가합니다).

jsFiddle 예제


답변

업데이트 : 2010 년에 답변이 처음 작성되었을 때 벨로우즈 함수 toFixed ()가 약간 다르게 작동했습니다. toFixed ()는 이제 약간의 반올림을 수행하는 것처럼 보이지만 엄격하게 수학적 방식은 아닙니다. 그러니 조심하세요. 테스트를 수행하십시오 … 아래에 설명 된 방법은 수학자가 예상하는대로 반올림을 잘 수행합니다.

  • toFixed()-메서드는 지정된 소수 자릿수를 유지하면서 숫자를 문자열로 변환합니다. 실제로 숫자를 반올림하는 것이 아니라 숫자를 자릅니다.
  • Math.round(n)-숫자를 가장 가까운 정수로 반올림합니다. 따라서 회전 :

0.5-> 1; 0.05-> 0

반올림하려면 숫자 0.55555를 소수점 둘째 자리까지만 올립니다. 다음을 수행 할 수 있습니다 (단계별 개념).

  • 0.55555 * 100 = 55.555
  • Math.Round(55.555) -> 56.000
  • 56.000 / 100 = 0.56000
  • (0.56000).toFixed(2) -> 0.56

그리고 이것은 코드입니다.

(Math.round(number * 100)/100).toFixed(2);


답변

이것은 나를 위해 일했습니다.

var new_number = float.toFixed(2);

예:

var my_float = 0.6666

my_float.toFixed(3) # => 0.667


답변

이전 답변은 출력을 다시 숫자로 입력하는 것을 잊었습니다. 취향에 따라 여러 가지 방법이 있습니다.

+my_float.toFixed(2)

Number(my_float.toFixed(2))

parseFloat(my_float.toFixed(2))


답변

이것은 실제로 CPU 친화적이지 않지만 :

Math.round(number*100)/100

예상대로 작동합니다.


답변

여기에 유용한 제안이 많이 포함 된 많은 답변이 있지만 각각은 여전히 몇 단계를 놓치고 있습니다.
그래서 여기 에 작은 함수로 묶인 완전한 솔루션이 있습니다.

function roundToTwoDigitsAfterComma(floatNumber) {
    return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}

이것이 어떻게 작동하는지 관심이있는 경우 :

  1. 100으로 배수 한 다음 반올림하여 쉼표 뒤의 2 자리 정밀도를 유지합니다.
  2. 다시 100으로 나누고 toFixed(2)쉼표 뒤에 2 자리 숫자를 유지하고 다른 사용하지 않는 부분을 던집니다.
  3. 대신 parseFloat()함수를 toFixed(2)반환 문자열 로
    사용하여 다시 float로 변환하십시오.

참고 : 금전적 값으로 작업하기 때문에 쉼표 뒤에 마지막 2 자리를 유지 하고 재무 계산을 수행 하는 경우 이는 좋은 생각아니므로 대신 정수 값을 사용 하는 것이 좋습니다 .


답변

아래 코드를 사용하십시오.

alert(+(Math.round(number + "e+2")  + "e-2"));