2013-01-22 3 views
-1

나는 스스로 해결할 수없는 질문이 있는데, 저는 여기에 푸시하여 php와 mysql에서 Vat 가격을 계산할 때 최고의 정밀도를 얻을 수 있다고 생각했습니다. 예를 들어PHP와 MySQL의 부가가치세에 대한 10 진수 정밀도

:

I have the gross price = 1199 
The TAX Amount is  = 24 
to extract the vat  = 1199/1.24 = 966.93548387096 round(966.93548387096,2) = 966.94 
ok 
now this value will be saved in mysql with decimal 12,2 

Now, if you add the vat = 966.94 * 24/100 = 232.0656 round(232.0656,2) = 232.07 
Final     = 966.94 + 232.07 = 1199.01 

, 내가 어떻게 떠없이 1199를 얻을 수 있습니다 내 질문?

도움이 필요합니다.

UPDATE : 데이터베이스에 저장

값은 세금 부가가치세 금액을 적용 곳에서 966.94이다.

옵션은 데이터베이스에 가격을 소개 할 때 4 자리 소수를 사용하여 값을 저장할 수 있지만 그 경우 열을 추출하고 용기를 꺼내기 위해 배열을 재정의해야합니다.

처럼 :

$arrResult = array(); 
      $handle = fopen("uploads/csv/".$csv, "r"); 
      if($handle) { 
      while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { 
      $arrResult[] = $row; 
      } 
      fclose($handle); 
      } 
      $titles = array_shift($arrResult); 
      // need to take out the price and apply price/1.24 and save the value as 4 decimal in mysql 
      $keys = array('code', 'price'); 

      $final = array(); 

        foreach ($arrResult as $key => $value) { 
           $final[] = array_combine($keys, $value); 
        } 
+0

어, 어디 코드는? –

답변

0

당신은 MySQL을 CAST() 기능을 사용할 수 있습니다.

:

mysql> select 1199.01 as floating, cast(1199.01 as signed) as non_floating; 
+----------+--------------+ 
| floating | non_floating | 
+----------+--------------+ 
| 1199.01 |   1199 | 
+----------+--------------+ 
1 row in set (0.00 sec) 

를 참조하십시오
Type Casting in MySQL

CAST can be used to convert to the following types: 

1. BINARY[(N)] 
2. CHAR[(N)] DATE 
3. DATETIME DECI 
4. MAL[(M[,D])] 
5. SIGNED [INTEGER] 
6. TIME 
7. UNSIGNED [INTEGER] 
+0

좋아, 01 차이로 저장되는 DB에서 값을 얻으려면 복잡합니다, 내가 뭘 원하는 올바른 값으로 MySQL에 저장하는 것입니다. – user2000260

+0

@ user2000260 db 테이블에 원래 값을 그대로 저장할 수 있습니다. 그리고 디스플레이 목적을 위해 예와 같이 검색 할 수 있습니다. –

+0

네, 저도 압니다 만 실제 가치가 1199.02라면 어떻게 될까요? – user2000260