我的代码没有产生想要的输出,我仍然不知道为什么。你能帮助我吗?谢谢!
问题是:计算每月总付款和从固定利率抵押贷款的初始贷款金额的差异。一个人想在河内买房子,并已接受了银行的固定利率抵押贷款,初始贷款金额为m,年利率为r%,持续时间为d年。每个月,买方将不得不支付本金和利息如下:每月固定本金额为m /(d * 12),每月利息按剩余本金额计算,第一个月为(m * r / 12)。在接下来的几个月里,它将是((m-m/(d * 12))* r / 12),等等,随着时间的推移而减少。
请编写一个程序,将初始贷款金额、固定利率和贷款期限作为输入,并在屏幕上打印d年内的月供总额以及与初始贷款金额的差额。这些值应显示为四舍五入到小数点后两位的浮点数。
INPUT
1000000000 0.11 10
OUTPUT
1554583333.33 554583333.33
字符串
这是我的解决方案,但输出不同于答案的最后几个数字
#include <stdio.h>
int main()
{
long long int money;
double rate;
int year;
scanf("%lld %lf %d", &money, &rate, &year);
double fixed_money=money/(year*12);
double total_money=0;
double a[year*12];
for( int i=0; i< year*12; i++){
a[i]= fixed_money+(money-i*fixed_money)*rate/12;
total_money+=a[i];
}
printf("%.2lf %.2lf", total_money, total_money-money );
}
型
输出是:
1554583315.15 554583315.15
型
1条答案
按热度按时间xzlaal3s1#
关键问题是
money/(year*12)
是整数除法,因此fixed_money
的值为833333.0,最终输出为:字符串
使用
1.0*money/(year*12)
等,商为833333.33333...,最终输出为:型
然而,这也是错误的,因为每月付款需要四舍五入到最接近的美分或8333333.33,并最终输出:
型