값에 toFixed 함수를 사용해보십시오. 예 :
var value = parseFloat(2.185);
var fixed = value.toFixed(2);
alert(fixed);
나는 잘 작동했다.
EDIT : parseFloat (stringVar)를 사용하여 문자열을 숫자로 변환 할 수 있습니다.
EDIT2 :
function myRound(num, places) {
return parseFloat(num.toFixed(places));
}
편집 3 :
업데이트 대답, 테스트 작업 :
function myRound(num, places) {
if (places== undefined) {
places = 2;
}
var mult = Math.pow(10,places + 1);
var mult2 = Math.pow(10,places);
return Math.round(num* mult/10)/mult2;
}
EDIT 4 :
,
는 의견에서 언급 한 대부분의 예에서 테스트 :
function myRound(num, places) {
if (places== undefined) {
places = 2;
}
var mult = Math.pow(10,places);
var val = num* mult;
var intVal = parseInt(val);
var floatVal = parseFloat(val);
if (intVal < floatVal) {
val += 0.1;
}
return Math.round(val)/mult;
}
편집 5 : I 찾을 관리 유일한 해결책은 정확한 진수에 라운드 얻기 위해 문자열을 사용하는 것입니다. String 프로토 타입 확장 메서드 인 replaceAt를 사용하여 아래에 솔루션이 붙여 넣어집니다. 누군가가 작동하지 않는 예를 발견했는지 확인하고 알려주십시오.
function myRound2(num, places) {
var retVal = null;
if (places == undefined) {
places = 2;
}
var splits = num.split('.');
if (splits && splits.length <= 2) {
var wholePart = splits[0];
var decimalPart = null;
if (splits.length > 1) {
decimalPart = splits[1];
}
if (decimalPart && decimalPart.length > places) {
var roundingDigit = parseInt(decimalPart[places]);
var previousDigit = parseInt(decimalPart[places - 1]);
var increment = (roundingDigit < 5) ? 0 : 1;
previousDigit = previousDigit + increment;
decimalPart = decimalPart.replaceAt(places - 1, previousDigit + '').substr(0, places);
}
retVal = parseFloat(wholePart + '.' + decimalPart);
}
return retVal;
}
String.prototype.replaceAt = function (index, character) {
return this.substr(0, index) + character + this.substr(index + character.length);
}
이것을 사용할 수 있습니다 :'return + (num.toFixed (2));'. 그러나 일반적으로 모든 계산을 먼저 실행하고 인쇄 직전에 결과를 반올림하는 것이 가장 좋습니다. – Teemu
@teemu, 그것은 오류를 일으키는 반올림이고, toFixed는 불행히도 같은 오류가 있습니다. –
여러 가지 숫자로 IE10과 FF21로 이것을 테스트했지만 반올림 오류가 발생하지 않았습니다 ... – Teemu