PostgreSQL의 나누기(/) 부정확성
PostgreSQL에서 나누기를 수행할 때 정확한 결과를 보장하려면 관련된 데이터 유형을 고려하는 것이 중요합니다. . 개발 비용을 회수하기 위해 판매할 소프트웨어 수량을 결정하는 것이 목표인 설명된 경우 정수 나누기는 잘못된 결과로 이어질 수 있습니다.
제공된 쿼리에서 dev_cost 및 Sell_cost는 모두 정수 유형입니다. 정수 나누기는 결과를 0 쪽으로 자릅니다. 즉, 16000을 7500으로 나누면 예상되는 3 대신 2가 생성됩니다.
정확한 결과를 얻으려면 값 중 하나 이상을 부동 소수점으로 캐스팅해야 합니다. 부동 소수점 또는 소수와 같은 유형입니다. 또는 ::decimal 구문을 사용하여 dev_cost를 암시적으로 십진수로 명시적으로 변환할 수 있습니다. 이렇게 하면 나누기가 부동 소수점 연산으로 강제되어 잘리지 않는 나누기가 발생합니다.
다음 수정된 쿼리를 고려하세요.
select dev_cost::decimal / sell_cost from software ;
또는 ceil() 함수를 사용할 수도 있습니다. 결과를 가장 가까운 정수로 반올림하려면:
select ceil(dev_cost::decimal / sell_cost) from software ;
이러한 기술을 활용하면 정확한 나눗셈 결과를 얻을 수 있습니다. 달성하여 데이터베이스 쿼리를 기반으로 한 비즈니스 계산이 건전하게 이루어지도록 보장합니다.
위 내용은 PostgreSQL에서 부정확한 정수 나누기를 어떻게 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!