고정 된 정밀도로 십진수 값을 저장하는 열이 거의없는 estimate_item
인 MySQL 테이블이 있습니다. 여기 내 테이블 구조가 있습니다.Mysql 또는 PHP의 십진수 정밀도 처리
TABLENAME : estimate_item
PHP를 사용하여 레코드를 검색하는 동안, 난 MySQL의의 기능을 사용하여 몇 가지 기본적인 계산을 할, 내가 사용하는 SQL 쿼리가 이것이다.
SELECT
COUNT(ei.item_id) as total_item,
SUM(ei.quantity) as total_quantity,
SUM(ei.number_of_carton) as total_carton,
SUM(ei.number_of_carton * ei.cbm_per_carton) as total_cbm,
SUM(ei.quantity * ei.cost) as total_cost,
SUM(ei.quantity * ei.rate) as total_rate,
e.commission_amount,
SUM(ei.quantity * ei.rate) + e.commission_amount as total_amount
FROM
ai_estimate e
LEFT JOIN
ai_estimate_item ei ON ei.estimate_id = e.id
WHERE
ei.estimate_id = ?
예를 들어 위의 쿼리는 결과를 반환합니다. 다음 열 이후
+------------+----------------+--------------+-----------+------------+------------+-------------------+--------------+
| total_item | total_quantity | total_carton | total_cbm | total_cost | total_rate | commission_amount | total_amount |
+------------+----------------+--------------+-----------+------------+------------+-------------------+--------------+
| 2 | 120 | 807 | 1122.6440 | 2.7500 | 137.5000 | 1500.00 | 1637.5000 |
+------------+----------------+--------------+-----------+------------+------------+-------------------+--------------+
내가 이런 식으로 네 열의 값을 반올림하려면, 4 개 정밀도 값 total_cbm_total, total_cost, total_rate, total_amount
이 포함되어 있습니다.
a)의 값이 라운드 137.50
d는 다음 137.5000
경우 값) 그것이 라운드 2.75
℃로 다음 2.7500
경우 값) 그것이 라운드 1122.644
B를 다음 1122.6440
이면) 값이 1200.0000
인 경우 반올림하여 1200.00
즉 값을 줄이려고합니다. 값에 따라 3 ~ 4 정밀도까지 올라갈 수있는 최소 2 개의 정밀도를 유지하십시오.
MySQL에서 직접이 작업을 수행 할 수있는 방법이 있습니까? 또는 PHP 방식?
감사합니다.
을 기반으로
PHP 측이 여기에 당신이 찾고있는 무엇을 달성한다 난 그냥 해킹 간단한 함수입니다 예를 들어, 당신이 원하는 모든 후행 0을 자릅니다. PHP로 출력하고 싶다면, 문자열 조작이나 number_format 함수를 사용할 수 있습니다. – Lusitanian
후행 0을 잘라내는 것이 문제가 될 수 있습니다.이 시점에서'1200.0000' 값을 갖고 있다면, 값이'1200.00'이되도록 두 개의 후행 0을 원합니까? –