为什么差几毛钱
@小甲鱼运行结果:
================房贷计算================
请输入单价(元/平方) :6000
请输入面积:120
请输入按揭成数:7
请输入按揭年数:20
请输入当前基准年利率:5.4
================报告结果================
房款总额: 720000.00元
贷款总额: 504000.00元
首期付款: 216000.00元
月均还款: 3438.53元
还款总额: 825248.38元
支付利息: 321248.38元
================小甲鱼方案================
请输入单价(元/平方) :6000
请输入面积:120
请输入按揭成数:7
请输入按揭年数:20
请输入当前基准年利率:5.4
========== 报告结果 ==========
房款总额:720000.00元
首期付款:216000.02元
贷款总额:504000.00元
还款总额:825248.44元
支付利息:321248.44元
月均还款:3438.54元
/*
0. “买房难,难于上青天……”(算了,不吐槽了o(╯□╰)o)
请根据下边的提示,写一个等额本息的还款计算器。
小知识:
等额本息还款法,也称定期付息,即借款人每月按相等的金额偿还贷款本息,
其中每月贷款利息按月初剩余贷款本金计算并逐月结清。
月均还款 = 贷款本金 * (月利率 * (1 + 月利率)^还款月数) / ((1 + 月利率)^还款月数 - 1)
总利息 = 还款月数 * 月均还款 - 贷款本金
贷款本金 = 房款总额 * 按揭成数
程序要求用户输入房屋单价、面积、按揭成数、按揭年数以及基准利率,
然后计算并显示等额本息还款法需要偿还的房款总额、首期付款、贷款总额、支付利息以及每月需要还款多少各项数据。)?
注1:// 后边的内容是注释部分,即写给你看的,程序编译时不会理会;
注2:按揭成数用户输入的是 7,其实表示的应该是 70%,即 0.7;
注3:用户输入的是还款年数,但程序中计算的是还款月数,所以要进行必要的转换;
注4:用户输入的年利率是 5.4,其实表示的是 5.4%,在程序中记得去掉百分号(除以 100),月利率 = 年利率 / 12
*/
#include <stdio.h>
#include <math.h>
void count_fangzi();
int main(){
count_fangzi();
}
void count_fangzi() {
printf("\n================房贷计算================\n");
float price, area, yir, mir; //单价,面积,年利率,月利率
float interest, Loan; //利息,贷款总额
float ave_repay, down_payment; //月均还款,首期付款
float total_price, total_repay; //房款总额,还款总额
int ratio, time; //按揭成数、按揭年数
printf("请输入单价(元/平方) : ");
scanf("%f", &price);
getchar();
printf("请输入面积:");
scanf("%f", &area);
getchar();
printf("请输入按揭成数: ");
scanf("%d", &ratio);
getchar();
printf("请输入按揭年数: ");
scanf("%d", &time);
getchar();
printf("请输入当前基准年利率: ");
scanf("%f", &yir);
getchar();
/*
月均还款 = 贷款本金 * (月利率 * (1 + 月利率)^还款月数) / ((1 + 月利率)^还款月数 - 1)
总利息 = 还款月数 * 月均还款 - 贷款本金
贷款本金 = 房款总额 * 按揭成数
*/
printf("\n================报告结果================\n");
total_price = price * area;//房款总额 = 单价 * 面积
printf("房款总额: %.2f元\n", total_price);
Loan = total_price * (ratio / 10.0);//贷款总额=房款总额*按揭成数((7成=70%)最高7成)
printf("贷款总额: %.2f元\n", Loan);
down_payment = total_price - Loan;//首期付款=房款总额-贷款总额
printf("首期付款: %.2f元\n", down_payment);
///////////////////////////////////////////////////////////////////////
//用户输入的年利率是 5.4,其实表示的是 5.4%,在程序中记得去掉百分号(除以 100),月利率 = 年利率 / 12
mir = yir / 100.0 / 12.0;//月利率=(基准年利率/100)/12
//月利率=年利率/100%百分制(5.4=0.054)/12个月
// 月均还款 = (贷款本金 * (月利率 * (1 + 月利率)^还款月数)) / ((1 + 月利率)^还款月数 - 1)
ave_repay = (Loan * (mir * pow(1 + mir, time * 12))) / (pow(1 + mir, time * 12 )-1);
printf("月均还款: %.2f元\n", ave_repay);
/////////////////////////////////////////////////////////////////////////////
total_repay = ave_repay * time * 12.0;//还款总额=月均还款*月数
printf("还款总额: %.2f元\n", total_repay);
interest = total_repay - Loan;//支付利息=还款总额-贷款总额
printf("支付利息: %.2f元\n", interest);
printf("\n================小甲鱼方案================\n");
printf("请输入单价(元/平方) : ");
scanf("%f", &price);
getchar();
printf("请输入面积:");
scanf("%f", &area);
getchar();
printf("请输入按揭成数: ");
scanf("%d", &ratio);
getchar();
printf("请输入按揭年数: ");
scanf("%d", &time);
getchar();
printf("请输入当前基准年利率: ");
scanf("%f", &yir);
getchar();
mir = yir / 100 / 12; // 年利率需要除以100得到,因为用户输入是5.4(%),而不是0.054
time = time * 12;
total_price = price * area;
Loan = total_price * ratio / 10; // 这里不能写成(ratio / 10),否则结果会变成0
ave_repay = Loan * mir * pow((1 + mir), time) / (pow((1 + mir), time) - 1);
interest = ave_repay * time - Loan;
total_repay = Loan + interest;
down_payment = total_price * (1 - (float)ratio / 10); // 强制转换ratio为浮点型
printf("========== 报告结果 ==========\n");
printf("房款总额:%.2f元\n", total_price);
printf("首期付款:%.2f元\n", down_payment);
printf("贷款总额:%.2f元\n", Loan);
printf("还款总额:%.2f元\n", total_repay);
printf("支付利息:%.2f元\n", interest);
printf("月均还款:%.2f元\n", ave_repay);
}
/*
请输入单价(元/平方) : 6000
请输入面积: 120
请输入按揭成数: 7
请输入按揭年数: 20
请输入当前基准年利率:5.4
========= 报告结果========
房款总额: 720000.00元
首期付款: 216000.00元
贷款总额: 504000.00元
还款总额: 825251.50元
支付利息: 321251.53元
月均还款: 3438.55元
*/
@高山 帮忙at下小甲鱼 歌者文明清理员 发表于 2023-3-23 19:51
@高山 帮忙at下小甲鱼
@小甲鱼 sfqxx 发表于 2023-3-23 19:55
@小甲鱼
不是,假的at似乎不能发送消息 歌者文明清理员 发表于 2023-3-23 19:57
不是,假的at似乎不能发送消息
不是的,你发个链接和我的对比一下 sfqxx 发表于 2023-3-23 20:12
不是的,你发个链接和我的对比一下
@高山 帮忙at下小甲鱼 {:10_262:}我说你用链接@小甲鱼,来验证我这是不是真的 sfqxx 发表于 2023-3-23 20:21
我说你用链接@小甲鱼,来验证我这是不是真的
不行的,前人验证过了 @小甲鱼 @不二如是 高山 发表于 2023-3-23 20:40
@小甲鱼 @不二如是
你看,你@的和我的是一样的,下面都有下划线 @歌者文明清理员看到了吗 sfqxx 发表于 2023-3-23 20:46
@歌者文明清理员看到了吗
哇 你也有? 我也有的 高山 发表于 2023-3-24 07:18
哇 你也有? 我也有的
我{:10_256:} emmmm,所以说了这么多,还是没能解决为什么差几毛钱 浮点数精度问题 就几毛钱而已
小甲鱼的二师兄 发表于 2023-3-31 00:56
浮点数精度问题
详细说说
页:
[1]