首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言財務計算:定期存款利息試算(單利 vs 複利)

     編輯:關於C語言

C語言財務計算:定期存款利息試算(單利 vs 複利)

本程式計算三種儲蓄方案的到期本利和,展示**單利**、**年複利**、**半年複利**的差異,是浮點數財務計算的入門範例。

完整程式碼

#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

關鍵觀察:複利頻率的影響

  • R3 (1.98%) < R2 (2.25%),但半年複利使有效年利率變為 (1+0.0198/2)² - 1 ≈ 1.99%,仍低於 R2。
  • 若 R3 ≥ R2,半年複利可能超越年複利。**複利頻率越高,有效年利率越高**(極限為連續複利 eʳ - 1)。

浮點精度與財務計算最佳實踐

  1. 避免使用 float:單精度約 7 位有效數字,財務金額建議用 double(15 位)或定點整數(分為單位)。
  2. 四捨五入到分:long cents = lrint(amount * 100),所有運算用整數。
  3. 格式化輸出: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);  // 半年複利一年

總結

理解單利與複利的數學差異、複利頻率對有效年利率的影響,並掌握浮點數在財務計算中的精度陷阱與最佳實踐,是開發金融軟體的基礎能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved