本程式計算三種儲蓄方案的到期本利和,展示**單利**、**年複利**、**半年複利**的差異,是浮點數財務計算的入門範例。
#include <stdio.h>
int main() {
float P0 = 1000.0f; // 本金
float R1 = 0.0036f; // 活期年利率 0.36%
float R2 = 0.0225f; // 一年定期年利率 2.25%
float R3 = 0.0198f; // 半年定期年利率 1.98%
float P1, P2, P3;
// 方案一:活期單利(一年)
P1 = P0 * (1 + R1);
// 方案二:一年定期單利(一年)
P2 = P0 * (1 + R2);
// 方案三:半年複利(一年內結息兩次)
P3 = P0 * (1 + R3/2) * (1 + R3/2);
printf("P1 (活期單利) = %.2f\n", P1); // 1003.60
printf("P2 (一年定期單利) = %.2f\n", P2); // 1022.50
printf("P3 (半年複利) = %.2f\n", P3); // 1019.90
return 0;
}
P1 (活期單利) = 1003.60 P2 (一年定期單利) = 1022.50 P3 (半年複利) = 1019.90
| 方案 | 公式 | 說明 |
|---|---|---|
| 單利 | P = P₀(1 + r×t) | 利息不計息,t=1 年時退化為 P₀(1+r) |
| 年複利 | P = P₀(1 + r)ᵗ | 每年結息一次,利息計入本金 |
| 半年複利 | P = P₀(1 + r/2)²ᵗ | 每半年結息,年利率除以 2,期數乘以 2 |
(1+0.0198/2)² - 1 ≈ 1.99%,仍低於 R2。eʳ - 1)。double(15 位)或定點整數(分為單位)。long cents = lrint(amount * 100),所有運算用整數。printf("%.2f", val) 僅控制顯示,不改變實際值。double compound_interest(double principal, double annual_rate,
int periods_per_year, int years) {
double rate_per_period = annual_rate / periods_per_year;
int total_periods = periods_per_year * years;
double factor = 1.0;
for (int i = 0; i < total_periods; i++) {
factor *= (1.0 + rate_per_period);
}
return principal * factor;
}
// 使用範例
double p3 = compound_interest(1000, 0.0198, 2, 1); // 半年複利一年
理解單利與複利的數學差異、複利頻率對有效年利率的影響,並掌握浮點數在財務計算中的精度陷阱與最佳實踐,是開發金融軟體的基礎能力。