| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:一个分期付款的运算疑问!请大虾帮忙解决下。。。谢谢!!!
只看楼主 加入收藏
qjunshen
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-5-11
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:3 
一个分期付款的运算疑问!请大虾帮忙解决下。。。谢谢!!!
张先生为购房,向银行贷款,贷款额为D元,每月准备还P元,月利率为R,求需要多少个月才能还清。
已知计算公式是
M=(logP-log(P-D×R))/log(1+R)
M是还清贷款所需月数。今假设D=324500元,P=3245元,R=0.8%。编程求还贷月数M和总共要还多少钱。
整个程序这样写后为什么我所得到的结果和已知的结果不符呢?
#include<stdio.h>
#include<math.h>
void main()
{
    int d=324500,p=3245;
    double r=0.008,m;
    m=(log10(p)-log10(p-d*r))/log10(1+r);
    printf("month=%f\n",m);
    printf("total=%f\n",m*p);
    getch();
}
应该是:
month=201.983404
total=655436.127930
可是我用win-tc得到的结果却是:
month=-0.980047
total=-3180.253132
请大虾帮忙指点迷津!
搜索更多相关主题的帖子: 分期付款 疑问 运算 
2010-08-17 23:51
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:20 
以下是引用qjunshen在2010-8-17 23:51:46的发言:

张先生为购房,向银行贷款,贷款额为D元,每月准备还P元,月利率为R,求需要多少个月才能还清。
已知计算公式是
M=(logP-log(P-D×R))/log(1+R)
M是还清贷款所需月数。今假设D=324500元,P=3245元,R=0.8%。编程求还贷月数M和总共要还多少钱。
整个程序这样写后为什么我所得到的结果和已知的结果不符呢?
#include
#include
void main()
{
    int d=324500,p=3245;
    double r=0.008,m;
    m=(log10(p)-log10(p-d*r))/log10(1+r);
    printf("month=%f\n",m);
    printf("total=%f\n",m*p);
    getch();
}
应该是:
month=201.983404
total=655436.127930
可是我用win-tc得到的结果却是:
month=-0.980047
total=-3180.253132
请大虾帮忙指点迷津!
你在别的编译器下结果正确!是因为新的编译器 int 类型4字节
但是你在TC下 int只有2字节 仅可表示范围-32768~32767 之间的数,你硬要表示要表示324500这个数,就会出现溢出的情况,建议写成占4字节的long类型就不会溢出了,或者P D 直接用实型表示,结果也不会有问题!

[ 本帖最后由 jack10141 于 2010-8-18 00:51 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-18 00:46
qjunshen
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-5-11
收藏
得分:0 
以下是引用jack10141在2010-8-18 00:46:59的发言:

你在别的编译器下结果正确!是因为新的编译器 int 类型4字节
但是你在TC下 int只有2字节 仅可表示范围-32768~32767 之间的数,你硬要表示要表示324500这个数,就会出现溢出的情况,建议写成占4字节的long类型就不会溢出了,或者P D 直接用实型表示,结果也不会有问题!
对的。你这么一说我就知道了324500这个数已经超出2^7-1的范围了,应该把D=324500定义为long int型就没问题了。谢谢大虾的指点啊!
2010-08-18 08:57
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 3楼 qjunshen
呵呵,我也是来学习的!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-18 12:37
快速回复:一个分期付款的运算疑问!请大虾帮忙解决下。。。谢谢!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018814 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved