이 숫자를 계산하고 반올림 할 때 두 가지 결과가 나옵니다. 오늘은 이고 어제는입니다. 입니다. 다른 필드에서도 비슷한 문제가 있었지만 Java 코드를 업데이트 한 후에 불일치가 사라졌습니다.Android 앱과 자바 스크립트 코드의 반올림 차이점
자바 스크립트 코드 :
document.getElementById("txt1").value = ((today - yesterday)/10000).toFixed(3);
안드로이드 코드 : 안드로이드 코드가 0.030을 반환하면서이
public Double RoundDouble(Double num, Integer places)
{
Double temp = Math.pow(10.0, places);
num = num * temp;
Math.round(num);
num = num/temp;
return num;
}
Double total = RoundDouble((today - yesterday)/10000,3);
txt1.setText(df.format(total));
자바 스크립트 코드가 .031를 반환합니다. 저는 수학을했고 반올림하기 전에 숫자는 .0305입니다. 나는이 문제가 다른 문제인 원인이 무엇인지 확신 할 수 없다. .0295 to .030.
다른 하드웨어 및 운영 체제에서 다른 부동 소수점 표현은 조금 다른 반올림을 처리합니다. 부동 소수점 값을 사용하면 특정 숫자를 완벽하게 표현할 수없는 경우가 있습니다. – tezromania
비슷한 문제가있는 또 다른 분야가있었습니다. .0230에서 .0230으로 제대로 반올림하지 못했지만 Android 앱에서 내 반올림 메소드를 변경 한 후에 해당 특정 필드에 대한 문제가 해결 된 것으로 보입니다. 나는 왜 그것이 한 분야의 문제를 해결했는지 이해하지는 못했지만 다른 문제는 해결하지 못했습니다. – Jim
"document.getElementById"는 ASP 코드가 아닙니다. 클라이언트 측 코드와 비슷합니다. – Dee