回答編集履歴
2
追記
answer
CHANGED
@@ -23,3 +23,27 @@
|
|
23
23
|
|
24
24
|
なお、本題から外れますが、その所得税の計算式間違えてますのでお気を付けください。控除はそこから引くんじゃないです。
|
25
25
|
[所得税の税率|所得税|国税庁](https://www.nta.go.jp/taxanswer/shotoku/2260.htm)
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
追記
|
30
|
+
```lang-javascript
|
31
|
+
function calcTax(income) {
|
32
|
+
return [
|
33
|
+
{income:0, rate:0},
|
34
|
+
{income:1950000, rate:0.05},
|
35
|
+
{income:3300000, rate:0.10},
|
36
|
+
{income:6950000, rate:0.20},
|
37
|
+
{income:9000000, rate:0.23},
|
38
|
+
{income:18000000, rate:0.33},
|
39
|
+
{income:40000000, rate:0.40},
|
40
|
+
{income:Infinity, rate:0.45}
|
41
|
+
].reverse().reduce(function(r, c){
|
42
|
+
return {
|
43
|
+
sum: r.sum + Math.max( r.income - c.income, 0 ) * r.prev.rate,
|
44
|
+
income: Math.min( c.income, r.income),
|
45
|
+
prev: c
|
46
|
+
}
|
47
|
+
},{sum:0, income:income, prev:{income:0, rate:0}}).sum
|
48
|
+
}
|
49
|
+
```
|
1
コードの修正
answer
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
sum: r.sum + Math.max( r.income - taxRate[i+1].income, 0 ) * c.rate,
|
18
18
|
income: Math.min( taxRate[i+1].income, r.income)
|
19
19
|
}
|
20
|
-
},{sum:0, income:income})
|
20
|
+
},{sum:0, income:income}).sum
|
21
21
|
}
|
22
22
|
```
|
23
23
|
|