質問するログイン新規登録

質問編集履歴

3

PHPバージョンを追記

2019/09/04 06:23

投稿

whimyama
whimyama

スコア9

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,7 @@
1
1
  税率対応で誤差が出ます。
2
2
 
3
+ PHPバージョンは「PHP 5.3.18」です。
4
+
3
5
  例えば、価格=1000で税率10%の場合、下記処理だと「1101」となってしまいます。
4
6
  まるめ誤差の影響でしょうか??対策などありますでしょうか?
5
7
 

2

コードを実行可能な書式へ変更

2019/09/04 06:23

投稿

whimyama
whimyama

スコア9

title CHANGED
File without changes
body CHANGED
@@ -6,8 +6,8 @@
6
6
  ```ここに言語を入力
7
7
 
8
8
  // 税率
9
- $taxRate=0.080
9
+ $taxRate=0.080;
10
- //$taxRate=0.100
10
+ //$taxRate=0.100;
11
11
 
12
12
  // 端数区分
13
13
  $taxHasu="1";

1

コードを実行可能な書式へ変更

2019/09/04 06:22

投稿

whimyama
whimyama

スコア9

title CHANGED
File without changes
body CHANGED
@@ -4,30 +4,45 @@
4
4
  まるめ誤差の影響でしょうか??対策などありますでしょうか?
5
5
 
6
6
  ```ここに言語を入力
7
- /* 税抜処理 */
8
7
 
9
- // 計算誤差を考慮
8
+ // 税率
10
- $calctaxRate = (1 + 税率) * 100;
9
+ $taxRate=0.080
10
+ //$taxRate=0.100
11
11
 
12
- if ( 切捨て ) {
12
+ // 端数区分
13
+ $taxHasu="1";
13
- 税抜価格=ceil( (税込価格/$calctaxRate) * 100));
14
+ //$taxHasu="2";
14
- } else if ( 四捨五入 ) {
15
- 税抜価格=round( (税込価格/$calctaxRate) * 100);
15
+ //$taxHasu="3";
16
- } else if ( 切上げ ) {
17
- 税抜価格=floor( (税込価格/$calctaxRate) * 100);
18
- }
19
16
 
20
- /* 税込処理 */
17
+ // 価格
18
+ $price=1000;
21
19
 
22
20
  // 計算誤差を考慮
23
- $calctaxRate = (1 + 税率) * 100;
21
+ $calctaxRate = (1 + $taxRate) * 100;
24
22
 
23
+ /******** 税抜処理 **************************/
25
- if ( 切捨て ) {
24
+ // 切捨て
25
+ if ( $taxHasu == "1" ) {
26
+ $outPrice=ceil( ($price/$calctaxRate) * 100);
27
+ // 四捨五入
28
+ } else if ( $taxHasu == "2" ) {
29
+ $outPrice=round( ($price/$calctaxRate) * 100);
30
+ // 切上げ
31
+ } else if ( $taxHasu == "3" ) {
26
- 税込価格=floor((税抜価格*$calctaxRate)/100);
32
+ $outPrice=floor( ($price/$calctaxRate) * 100);
27
- } else if ( 四捨五入 ) {
28
- 税込価格=round((税抜価格*$calctaxRate)/100);
29
- } else if ( 切上げ ) {
30
- 税込価格=ceil((税抜価格*$calctaxRate)/100);
31
33
  }
32
34
 
35
+
36
+ /******** 税込処理 **************************/
37
+ // 切捨て
38
+ if ( $taxHasu == "1" ) {
39
+ $inPrice=floor(($price*$calctaxRate)/100);
40
+ // 四捨五入
41
+ } else if ( $taxHasu == "2" ) {
42
+ $inPrice=round(($price*$calctaxRate)/100);
43
+ // 切上げ
44
+ } else {
45
+ $inPrice=ceil(($price*$calctaxRate)/100);
46
+ }
47
+
33
48
  ```