어떻게 해야할지 모르겠어요? 나는 쉼표 번호를 추가하고 있는데, 결과는 물론 항상 쉼표 뒤에 너무 많은 자릿수가있는 숫자입니다. 누군가?
어떻게 해야할지 모르겠어요? 나는 쉼표 번호를 추가하고 있는데, 결과는 물론 항상 쉼표 뒤에 너무 많은 자릿수가있는 숫자입니다. 누군가?
답변:
편집 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 경계에서 반올림 할 때 절대 값이 증가합니다).
업데이트 : 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.00056.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
0.6666.toFixed(3)
됩니다 0.666
대신 0.667
. @Andrei는 올바로 반올림하기에 적합한 솔루션을 가지고있는 것 같습니다.
toFixed()
완벽하게 작동합니다 0.6666.toFixed(3) # => 0.667
.. 당신의 대답에 추가하겠습니다.
여기에 유용한 제안이 많이 포함 된 많은 답변이 있지만 각각은 여전히 몇 단계를 놓치고 있습니다.
그래서 여기 에 작은 함수로 묶인 완전한 솔루션이 있습니다.
function roundToTwoDigitsAfterComma(floatNumber) {
return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}
이것이 어떻게 작동하는지 관심이있는 경우 :
toFixed(2)
쉼표 뒤에 2 자리 숫자를 유지하고 다른 사용하지 않는 부분을 던집니다.parseFloat()
함수를 toFixed(2)
반환 문자열 로
사용하여 다시 float로 변환하십시오.참고 : 금전적 값으로 작업하기 때문에 쉼표 뒤에 마지막 2 자리를 유지 하고 재무 계산을 수행 하는 경우 이는 좋은 생각 이 아니므로 대신 정수 값을 사용 하는 것이 좋습니다 .
아래 코드를 사용하십시오.
alert(+(Math.round(number + "e+2") + "e-2"));