老谭的C语言 算利息的问题 小白求教

weixin_40642464 2017-10-15 05:57:47
按书上输入的代码:
#include
int main()
{
float p0 = 1000, r1 = 0.0036, r2 = 0.0225, r3 = 0.0198, p1, p2, p3;
p1 = p0*(1 + r1);
p2 = p0*(1 + r2);
p3 = p0*(1 + r3 / 2)*(1 + r3 / 2);
printf("p1=%f\np2=%f\np3=%f\n", p1, p2, p3);
system("pause");
return 0;
}
得到的结果是:
p1=1003.599976
p2=1022.500061
p3=1019.897949


书上的结果是:
p1=1003.599976
p2=1022.500000
p3=1019.898010


试过把float改成double,结果是:
p1=1003.600000
p2=1022.500000
p3=1019.898010


自学的菜狗,大家帮忙看看是什么情况
...全文
124 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-10-16
  • 打赏
  • 举报
回复
自信男孩 2017-10-16
  • 打赏
  • 举报
回复
这是浮点数精度的问题,float精度是小数点后6位,double类型比float精度长
pgao02 2017-10-16
  • 打赏
  • 举报
回复
float的能保证的精度也就是6位

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧