请先参考这篇
https://www.fubon.com/banking/document/news/TW/deposit_interest.pdf
每日利息之计算方式如下:1,000,000 元*0.8%*1/365 =21.9178081
元,四舍五入至小数点第五位后每日利息相当于 21.91781 元。假设计息期间首月 31 日
、次月 28 日,则该 2 个月之利息分别为:
(1)21.91781*31=679.45211,四舍五入至元,即 679 元整;
(2) 21.91781*28=613.69868,四舍五入至元,即 614 元整。
将code start 到 code end 放入此站 然后点网站中第一列的Run看结果
https://www.onlinegdb.com/online_c++_compiler
如图
https://www.mediafire.com/view/qd3cp0zeb081c67/fubon_continue.png/file
修改成可连算6年 可以改 i < 6 to i < 20 连算20年 但注意行规上限是70万
//code start
#include <iostream>
#include <stdio.h>
#include <math.h>
int main()
{
double half_interest0;
double half_interest1;
double accumulation = 0.0;
double principal_interest = 0.0;
//Round to five decimal places
accumulation += round((principal_interest + 10000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 20000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 28;
accumulation += round((principal_interest + 30000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 40000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 30;
accumulation += round((principal_interest + 50000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 60000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 20;
half_interest0 = accumulation;
accumulation = 0.0;
accumulation += round((principal_interest + half_interest0 + 60000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 10; //6/21 pay interest
accumulation += round((principal_interest + half_interest0 + 70000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 80000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 90000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 30;
accumulation += round((principal_interest + half_interest0 + 100000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 110000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 30;
accumulation += round((principal_interest + half_interest0 + 120000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 20;
half_interest1 = accumulation;
accumulation = 0.0;
accumulation +=
round((principal_interest+half_interest0+half_interest1+120000) * 1.595 / 100
/ 365 * 100000.0)/100000.0 * 11; //12/21 pay interest
std::cout << "Result0: " << half_interest0 + half_interest1 << std::endl;
principal_interest += 120000 + half_interest0 + half_interest1;
accumulation += round((principal_interest + 10000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 20000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 28;
accumulation += round((principal_interest + 30000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 40000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 30;
accumulation += round((principal_interest + 50000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 60000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 20;
half_interest0 = accumulation;
accumulation = 0.0;
accumulation += round((principal_interest + half_interest0 + 60000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 10; //6/21 pay interest
accumulation += round((principal_interest + half_interest0 + 70000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 80000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 90000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 30;
accumulation += round((principal_interest + half_interest0 + 100000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 110000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 30;
accumulation += round((principal_interest + half_interest0 + 120000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 20;
half_interest1 = accumulation;
accumulation = 0.0;
accumulation +=
round((principal_interest+half_interest0+half_interest1+120000) * 1.595 / 100
/ 365 * 100000.0)/100000.0 * 11; //12/21 pay interes
std::cout << "Result1: " << half_interest0 + half_interest1 << std::endl;
principal_interest += 120000 + half_interest0 + half_interest1 ;
accumulation += round((principal_interest + 10000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 20000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 28;
accumulation += round((principal_interest + 30000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 40000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 30;
accumulation += round((principal_interest + 50000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 60000) * 1.595 / 100 / 365 *
100000.0)/100000.0 * 20;
half_interest0 = accumulation;
accumulation = 0.0;
accumulation += round((principal_interest + half_interest0 + 60000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 10; //6/21 pay interest
accumulation += round((principal_interest + half_interest0 + 70000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 80000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 90000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 30;
accumulation += round((principal_interest + half_interest0 + 100000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 110000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 30;
accumulation += round((principal_interest + half_interest0 + 120000) * 1.595
/ 100 / 365 * 100000.0)/100000.0 * 20;
half_interest1 = accumulation;
accumulation = 0.0;
accumulation +=
round((principal_interest+half_interest0+half_interest1+120000) * 1.595 / 100
/ 365 * 100000.0)/100000.0 * 11; //12/21 pay interes
std::cout << "Result2: " << half_interest0 + half_interest1 << std::endl;
std::cout << std::endl;
principal_interest = 0.0;
accumulation = 0.0;
for (int i = 0; i<5; i++)
{
accumulation += round((principal_interest + 10000) * 1.595 / 100 /
365*100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 20000) * 1.595 / 100 /
365*100000.0)/100000.0 * 28;
accumulation += round((principal_interest + 30000) * 1.595 / 100 /
365*100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 40000) * 1.595 / 100 /
365*100000.0)/100000.0 * 30;
accumulation += round((principal_interest + 50000) * 1.595 / 100 /
365*100000.0)/100000.0 * 31;
accumulation += round((principal_interest + 60000) * 1.595 / 100 /
365*100000.0)/100000.0 * 20;
//
half_interest0 = accumulation;
accumulation = 0.0;
accumulation += round((principal_interest + half_interest0 + 60000) *
1.595 / 100 / 365*100000.0)/100000.0 * 10; /*6/21 pay interest*/
accumulation += round((principal_interest + half_interest0 + 70000) *
1.595 / 100 / 365*100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 80000) *
1.595 / 100 / 365*100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 90000) *
1.595 / 100 / 365*100000.0)/100000.0 * 30;
accumulation += round((principal_interest + half_interest0 + 100000) *
1.595 / 100 / 365*100000.0)/100000.0 * 31;
accumulation += round((principal_interest + half_interest0 + 110000) *
1.595 / 100 / 365*100000.0)/100000.0 * 30;
accumulation += round((principal_interest + half_interest0 + 120000) *
1.595 / 100 / 365*100000.0)/100000.0 * 20;
//
half_interest1 = accumulation;
accumulation = 0.0;
accumulation += round((principal_interest + half_interest0 +
half_interest1 + 120000) * 1.595 / 100 / 365 * 100000.0)/100000.0 * 11;
/*12/21 pay interest*/
std::cout << "year total interest: " << half_interest0 + half_interest1
<< std::endl;
principal_interest += 120000 + half_interest0 + half_interest1;
std::cout << "principal_interest: " << principal_interest << std::endl <<
std::endl;
}
getchar();
}
//code end
大家再请更正
定期储蓄存款二年期
调整日期 固定 机动
2023/03/28 1.5550 1.5950
2022/12/20 1.4300 1.4700
2022/09/27 1.3050 1.3450
2022/06/21 1.1800 1.2200
2022/03/22 1.0550 1.0950
※ 引述《fatalfeel2 (风在动)》之铭言:
: 公教 定期储蓄存款 半年给息 利率1.595%
: 附件为细算公式 至少问了六位行员
: 如果不说 你一定不知道Trick在那里
: 那一家的我不想说了
: 最后得知 它是单利 同时 以int(integer整数去除小数点) 来算
: 你可以心算出第一年前两个月是 0
: 无言...........................
: 公教人员 你们辛苦了
: ////////////////////////////细算公式///////////////
: Result0: 858 第一年利
: Result1: 2801 第二年利
: Result2: 4760 第三年利
: 将code start 到 code end 放入此站 然后点网站中第一列的Run看结果
: https://www.onlinegdb.com/online_c++_compiler
: 如图
: https://www.mediafire.com/view/yvgqp550i4017zx/bank_interest.png/file
: //code start
: #include <iostream>
: #include <stdio.h>
: int main()
: {
: double half_interest0;
: double half_interest1;
: double result = 0.0;
: result += ((int)(10000 * 1.595 / 100 / 365)) * 31;
: result += ((int)(20000 * 1.595 / 100 / 365)) * 28;
: result += ((int)(30000 * 1.595 / 100 / 365)) * 31;
: result += ((int)(40000 * 1.595 / 100 / 365)) * 30;
: result += ((int)(50000 * 1.595 / 100 / 365)) * 31;
: result += ((int)(60000 * 1.595 / 100 / 365)) * 20;
: half_interest0 = result;
: result += ((int)((60000 + half_interest0) * 1.595 / 100 / 365)) * 10;
: /*6/21 pay interest*/
: result += ((int)((70000 + half_interest0) * 1.595 / 100 / 365)) * 31;
: result += ((int)((80000 + half_interest0) * 1.595 / 100 / 365)) * 31;
: result += ((int)((90000 + half_interest0) * 1.595 / 100 / 365)) * 30;
: result += ((int)((100000 + half_interest0) * 1.595 / 100 / 365)) * 31;
: result += ((int)((110000 + half_interest0) * 1.595 / 100 / 365)) * 30;
: result += ((int)((120000 + half_interest0) * 1.595 / 100 / 365)) * 20;
: half_interest1 = result;
: result += ((int)((120000 + half_interest1) * 1.595 / 100 / 365)) * 11;
: /*12/21 pay interest*/
: std::cout << "Result0: " << result << std::endl;
: result = 0.0;
: result += ((int)((120000 + 858 + 10000) * 1.595 / 100 / 365)) * 31;
: result += ((int)((120000 + 858 + 20000) * 1.595 / 100 / 365)) * 28;
: result += ((int)((120000 + 858 + 30000) * 1.595 / 100 / 365)) * 31;
: result += ((int)((120000 + 858 + 40000) * 1.595 / 100 / 365)) * 30;
: result += ((int)((120000 + 858 + 50000) * 1.595 / 100 / 365)) * 31;
: result += ((int)((120000 + 858 + 60000) * 1.595 / 100 / 365)) * 20;
: half_interest0 = result;
: result += ((int)((120000 + 858 + 60000 + half_interest0) * 1.595 / 100 /
: 365)) * 10; /*6/21 pay interest*/
: result += ((int)((120000 + 858 + 70000 + half_interest0) * 1.595 / 100 /
: 365)) * 31;
: result += ((int)((120000 + 858 + 80000 + half_interest0) * 1.595 / 100 /
: 365)) * 31;
: result += ((int)((120000 + 858 + 90000 + half_interest0) * 1.595 / 100 /
: 365)) * 30;
: result += ((int)((120000 + 858 + 100000 + half_interest0) * 1.595 / 100 /
: 365)) * 31;
: result += ((int)((120000 + 858 + 110000 + half_interest0) * 1.595 / 100 /
: 365)) * 30;
: result += ((int)((120000 + 858 + 120000 + half_interest0) * 1.595 / 100 /
: 365)) * 20;
: half_interest1 = result;
: result += ((int)((120000 + 858 + 120000 + half_interest1) * 1.595 / 100 /
: 365)) * 11; /*12/21 pay interest*/
: std::cout << "Result1: " << result << std::endl;
: half_interest0 = 0.0;
: result = 0.0;
: result += ((int)((240000 + 858 + 2801 + 10000) * 1.595 / 100 / 365)) * 31;
: result += ((int)((240000 + 858 + 2801 + 20000) * 1.595 / 100 / 365)) * 28;
: result += ((int)((240000 + 858 + 2801 + 30000) * 1.595 / 100 / 365)) * 31;
: result += ((int)((240000 + 858 + 2801 + 40000) * 1.595 / 100 / 365)) * 30;
: result += ((int)((240000 + 858 + 2801 + 50000) * 1.595 / 100 / 365)) * 31;
: result += ((int)((240000 + 858 + 2801 + 60000) * 1.595 / 100 / 365)) * 20;
: half_interest0 = result;
: result += ((int)((240000 + 858 + 2801 + 60000 + half_interest0) * 1.595 /
: 100 / 365)) * 10; /*6/21 pay interest*/
: result += ((int)((240000 + 858 + 2801 + 70000 + half_interest0) * 1.595 /
: 100 / 365)) * 31;
: result += ((int)((240000 + 858 + 2801 + 80000 + half_interest0) * 1.595 /
: 100 / 365)) * 31;
: result += ((int)((240000 + 858 + 2801 + 90000 + half_interest0) * 1.595 /
: 100 / 365)) * 30;
: result += ((int)((240000 + 858 + 2801 + 100000 + half_interest0) * 1.595
: / 100 / 365)) * 31;
: result += ((int)((240000 + 858 + 2801 + 110000 + half_interest0) * 1.595
: / 100 / 365)) * 30;
: result += ((int)((240000 + 858 + 2801 + 120000 + half_interest0) * 1.595
: / 100 / 365)) * 20;
: half_interest1 = result;
: result += ((int)((240000 + 858 + 2801 + 120000 + half_interest1) * 1.595
: / 100 / 365)) * 11; /*12/21 pay interest*/
: std::cout << "Result2: " << result << std::endl;
: return 0;
: }
: //code end