double 값을 저장하려는 NSArray가 있습니다.doubleValue는 개체를 항상 double 값으로 올바르게 변환하지 않습니다.
NSNumber *num;
num = [NSNumber numberWithDouble:someDouble];
[setOfDoubles addObject:num];
에 따라
num = [setOfDoubles lastObject];
[setOfDoubles removeLastObject];
doubleValueToUse = [num doubleValue];
를 따를 때 나는 내 문제가 가끔 (안 항상), 예를 들어있는 요소를 읽으면서 나는 요소를 추가
NSMutableArray *setOfDoubles;
를 따를 때 나는 그것을 정의 num (객체로서)이 5.1 일 때 doubleValueToUse (double 값)는 5.099999999999996입니다. 내가 num (객체로서)을 5.1이라고 생각하는 방식은 내가 디버깅하는 것입니다. 그리고 라인 num = [setOfDoubles lastObject]에 마우스를 올려 놓을 때입니다; 그것은 5.1을 보여 주지만 doubleValue 변환 후에는 내가 언급 한 숫자가됩니다. 아무도 왜 이런 일이 일어나는 지 알고 있습니까?
감사합니다! 이제 문제가 무엇인지 이해합니다. 그렇다면 실제 계산기 나 계산기로 아이폰 계산기를 어떻게 해석하면이 문제를 해결할 수 있을까요? 그들은 float 대신에 다른 데이터 타입을 사용합니까? 아니면 어떤 종류의 반올림을 구현합니까? – Dogahe
반올림은 확실히 사용됩니다 (예 : 2/3 시도). 가능하면 다른 기술 (가능한 경우 고정 소수점 계산 사용). – SVD
고마워요! 보내 주신 링크가 많은 도움이되었습니다. float (또는 double)의 정밀도로 조작 한 다음 % g.14와 같은 문자열을 포맷하여 소수점 이하 자릿수로 결과를 표시하면 문제가 해결된다는 것을 알았습니다. 나는 이것에 예외가 생길지 모르지만, 지금까지는 효과가있다. 다시 한 번 감사드립니다! – Dogahe