계산 오류 질문 드립니다. 정보
계산 오류 질문 드립니다.본문
아래와 같은 스크립트를 이용하여 계산을 하고 있습니다.
그런데 wr_2값의 결과가 잘못 나오게에 질문을 드립니다.
wr1val 값이 90000 이 나오게 되면 wr_2의 값이 62999.99999999 이런식으로 나오는데 이유를모르겠습니다. 다른 값에서는 정확한 계산이 이루어 지는데 90000에서만 잘못된 계산이 나옵니다.
<script type='text/javascript'>
function btn() {
// wr_1 값저장
var wr1val = parseInt(document.getElementsByName('wr_1')[0].value);
// wr_25 값저장
var wr25val = parseInt(document.getElementsByName('wr_25')[0].value);
// wr_2값 구하기
if (wr25val >= 1) {
document.getElementsByName('wr_2')[0].value = wr1val*0.7;
} else {
document.getElementsByName('wr_2')[0].value = wr1val*1;
}
// wr_26값 구하기
if (wr1val >= 1) {
document.getElementsByName('wr_26')[0].value = wr25val*0.6;
} else {
document.getElementsByName('wr_26')[0].value = wr25val*1;
}
//
var wr2val = parseInt(document.getElementsByName('wr_2')[0].value);
//
var wr26val = parseInt(document.getElementsByName('wr_26')[0].value);
// wr_28값 구하기
document.getElementsByName('wr_28')[0].value = wr1val+wr25val;
// wr_29값 구하기
document.getElementsByName('wr_29')[0].value = wr2val+wr26val;
return true;
}
</script>
그런데 wr_2값의 결과가 잘못 나오게에 질문을 드립니다.
wr1val 값이 90000 이 나오게 되면 wr_2의 값이 62999.99999999 이런식으로 나오는데 이유를모르겠습니다. 다른 값에서는 정확한 계산이 이루어 지는데 90000에서만 잘못된 계산이 나옵니다.
<script type='text/javascript'>
function btn() {
// wr_1 값저장
var wr1val = parseInt(document.getElementsByName('wr_1')[0].value);
// wr_25 값저장
var wr25val = parseInt(document.getElementsByName('wr_25')[0].value);
// wr_2값 구하기
if (wr25val >= 1) {
document.getElementsByName('wr_2')[0].value = wr1val*0.7;
} else {
document.getElementsByName('wr_2')[0].value = wr1val*1;
}
// wr_26값 구하기
if (wr1val >= 1) {
document.getElementsByName('wr_26')[0].value = wr25val*0.6;
} else {
document.getElementsByName('wr_26')[0].value = wr25val*1;
}
//
var wr2val = parseInt(document.getElementsByName('wr_2')[0].value);
//
var wr26val = parseInt(document.getElementsByName('wr_26')[0].value);
// wr_28값 구하기
document.getElementsByName('wr_28')[0].value = wr1val+wr25val;
// wr_29값 구하기
document.getElementsByName('wr_29')[0].value = wr2val+wr26val;
return true;
}
</script>
댓글 전체
통상 저런 문제점은...
숫자를 문자열로 인식하는 문제점 때문에 그렇습니다.
강제로 전부다 숫자형으로 지정해 주셔야 됩니다.
디버깅은 일일히.. alert로 찍어봐야 하구요
숫자를 문자열로 인식하는 문제점 때문에 그렇습니다.
강제로 전부다 숫자형으로 지정해 주셔야 됩니다.
디버깅은 일일히.. alert로 찍어봐야 하구요
자바스크립트 소숫점 처리가 일반적으로 생각하는 산술과 다른 부분이 있습니다
-이진처리 방법상의 문제랄까..
자세한 사항은 저도 잘 모르니 설명드릴 수는 없고
이렇게 하면 됩니다.
wr25val * 0.7 ==> wr25val * 7 /10
-이진처리 방법상의 문제랄까..
자세한 사항은 저도 잘 모르니 설명드릴 수는 없고
이렇게 하면 됩니다.
wr25val * 0.7 ==> wr25val * 7 /10