2012-03-21 2 views
0

내부적으로 BCMath library을 사용하여 PHP에서 임의의 정밀도 십진수로 작업하기위한 클래스를 작성하고 있습니다.bcdiv()가있는 나누기가 유한 한 결과를 생성하는지 확인하는 방법?

adding, subtracting 또는 multiplying 두 개의 숫자가있는 경우 원하는 숫자를 잃어 버리지 않도록 필요한 정밀도를 예측할 수 있습니다.

그러나 division의 경우 자릿수는 무한 수 있으며 나누기 결과를 유한 한 자릿수로 표시 할 수없는 경우 내 라이브러리에서 예외가 발생하기를 바랍니다.

결과를 유한 한 경우 어떻게 나누는 지 알 수 있습니까?이 경우 결과의 척도를 계산 하시겠습니까?

답변

1

% (계수) 연산을 수행해야합니다. 잠시 기다려주십시오. 아, SH ...

실제로 실행 구분 (또는 유사한 단계) 자체로는 불가능합니다.

divmod 함수를 만들면 도움이됩니다.이 함수는 정수 나누기 및 반올림 한 결과를 반환합니다. 그리고 나머지가 0인지 확인하십시오.

또한 임의의 rational number1/3 = 0.(3)1/7 = 0.(142857)과 같이 repeating decimal으로 표시 될 수있다. 나쁜 부분은 기간 길이가이 수치의 최대 값 일 수 있기 때문에 합리적인 수치로 정확한 계산을 수행하려는 경우 내부적으로 숫자를 n/m으로 표시하는 것이 좋습니다. 분모의 유일한 소인수가 2

5. BCMath를 사용하는 경우

0

감소 된 부분은, 당신이 기약 분수를 줄이기 위해 유클리드 알고리즘을 구현해야 할 것 같아요 유한 진수 표현이있다 그런 다음 분모를 테스트하십시오. 그것은 문제의 가치가없는 것 같습니다.

관련 문제