2009-08-25 7 views

답변

1

NSDecimalNumber 클래스를 훨씬 더 정밀하게 보려면을 (를) 참조하십시오. 다른 의견에서와 같이 - 부정확 한 문제를 발견 했습니까? 또한 정확도가 더 느려집니다.

+1

더 정확하게는하지만 다른 수학을 수행합니다. 지식. – jtbandes

+0

수학은 수학입니다. 다양한 정도의 (아주 작고 잘 정의 된) 퍼지 작업이 진행되고있는 부동 소수점 숫자와 달리 결과가 더 정확합니다. 재정적 인면에서 어떤 종류의 10 진수 클래스를 사용하는 것이 더 낫습니다 ... –

2

나는 long double이 한계라고 생각하지만, 정말로 원하는대로 달라집니다. 실제로 부정확 한 문제에 부딪 혔습니까?

+0

글쎄, 이론적으로 내가 한 ;-)하지만 나는 실제로 원하지 않는다. –

+1

그 의미는 무엇입니까? 이론적으로 부정확 한 문제는 없습니다. 실제 구현에서는 부정확성이 문제입니다. – jprete

+0

무한 메모리가있는 컴퓨터 만 임의의 실수의 정확한 값을 저장할 수 있습니다. 응용 프로그램에서 임의의 숫자에 대한 계산을 수행 할 수있는 경우, 경우에 따라 정밀도가 떨어지거나 무한한 메모리가있는 기계를 발명해야한다는 것을 받아 들여야합니다.) – rpetrich

1

더 많은 정밀도를 추가하는 것이 문제를 해결하는 하나의 방법이지만 때로는 실제 문제 (보통?)가 계산을 수행하는 방식에 있습니다. 이 경우, 저는 건강한 RTFM을 금지합니다. FP 산술에 관한 모든 입문서는 왜 어떤 방정식이 비참한 지, 그리고 망각의 어지럽히는 것을 피하는 방법을 다룰 것입니다.

3

한 가지주의해야 할 점은 long double은 iPhone 하드웨어에서 double으로 동작한다는 것입니다. 더 큰 유형의 추가 정밀도는 없습니다. Simulator에서 더 정밀하게 처리 할 수 ​​있습니다. Mac에서 실행되기 때문에 혼동을 일으킬 수 있습니다.

here (및 다른 주석 작성자)과 같이 NSDecimal 또는 NSDecimalNumber는 정밀도 (최대 34 자리)로 이동하는 방법이며이를 사용하여 수행 된 계산은 이진 부동 소수점이 아닌 실제 소수 수학으로 수행됩니다. 이렇게하면 일반적인 IEEE 754 수학에서 볼 수있는 많은 오류를 피할 수 있습니다.

관련 문제