0

私は自分で解決できない質問があり、php と mysql で付加価値税の価格を計算する最高の精度を得るためにここにプッシュできると考えていました。

例えば:

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 を取得するにはどうすればよいですか?

どんな助けでも大歓迎です。

アップデート:

データベースに保存される値は 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);
                    }
4

2 に答える 2

1

CAST()MySQLの機能を利用できます。

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)

参照:
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]
于 2013-01-22T16:05:03.650 に答える