質問編集履歴
3
PHPバージョンを追記
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
コードを実行可能な書式へ変更
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
コードを実行可能な書式へ変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,30 +4,45 @@
|
|
4
4
|
まるめ誤差の影響でしょうか??対策などありますでしょうか?
|
5
5
|
|
6
6
|
```ここに言語を入力
|
7
|
-
/* 税抜処理 */
|
8
7
|
|
9
|
-
//
|
8
|
+
// 税率
|
10
|
-
$
|
9
|
+
$taxRate=0.080
|
10
|
+
//$taxRate=0.100
|
11
11
|
|
12
|
-
|
12
|
+
// 端数区分
|
13
|
+
$taxHasu="1";
|
13
|
-
|
14
|
+
//$taxHasu="2";
|
14
|
-
} else if ( 四捨五入 ) {
|
15
|
-
|
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 +
|
21
|
+
$calctaxRate = (1 + $taxRate) * 100;
|
24
22
|
|
23
|
+
/******** 税抜処理 **************************/
|
25
|
-
|
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
|
-
|
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
|
```
|