왜 ColdFusion의 수학 연산은 부동 소수점 수학 문제의 영향을받는 것 같지 않습니까? equivlant 자바 코드는 두 개의 복식을 추가 할 때 나는 "기대 d는 무엇을 생산하지만왜 ColdFusion에서 0.06 + 0.01 = 0.07입니까?
result = 0.06 + 0.01;
writedump(result);
writedump(result.getClass().getName());
0.07
java.lang.Double에
을 출력합니다 코드를 가지고 :
public static void main(String[] args) {
double a = 0.01d;
double b = 0.06d;
System.out.println(a + b); //0.06999999999999999
}
이것은 부동 수학 (http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html)의 현실 때문에 ColdFusion에서 볼 수 있습니다.
ColdFusion에서 장면 뒤에서 "마법"을 수행합니까? 아니면 여기에서 격리 된 예외를보고 있습니까?
Google에서 제공하는 모든 것이 CF에 특별한 것은 없으며 사용자가 기대하는 결과를 산출한다고 말합니다. 왜 사람들은 부동 소수점 정밀도를 이해하지 못하기 때문에 이유를 묻습니다. CF 코드에서 다른 일이 일어나지 않았습니까? –
네, 바로 그 발췌 문장입니다. 방금 일어날 일을 볼 수있는 가장 단순한 시나리오를 만들었습니다. 내가이 코드를 한 단계 더 나아가'a = 0.01; b = 0.06; – bittersweetryan
CF는 대부분의 값을 처음에는 문자열로 저장하지만 다른 유형 (숫자, 날짜, 숫자 등)으로 변환하는 경우에만 사용할 수 있습니다. 등). '+'와 같은 수학 연산자가 적용될 때와 같이 http://help.adobe.com/ko_KR/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09af4-7fc3.html – Leigh