鱼C论坛

 找回密码
 立即注册
查看: 3592|回复: 3

那位C

[复制链接]
发表于 2011-7-28 00:12:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 soldier 于 2011-7-28 09:13 编辑

2.jpg 这个是整型编译出来的结果。
未命名.jpg 这个是双精度编译出来的结果
  1. #include <iostream>
  2. using namespace std;
  3. double func(double a, double *b, double *c);
  4. int main()
  5. {
  6. double a, b, c;
  7. double check;
  8. cout<<"请输入要进行运算的数字,";
  9. cout<<"你输入的数字将作为园的半径和正方形的边长";
  10. cin>>a;
  11. check=func(a, &b, &c);
  12. if(check)
  13. {
  14.   cout<<"输入的数字超过计算的范围!\n";
  15. }
  16. else
  17. {
  18.   cout<<"圆的面积:"<<b<<endl;
  19.   cout<<"正方形的面积为:"<<c<<endl;
  20. }
  21. return 0;
  22. }
  23. double func(double a, double *b, double *c)
  24. {
  25. if(a>20000000)
  26. {
  27.   a = 0;
  28. }
  29. else
  30. {
  31.   *b = a*a*3.14;
  32.   *c = a*a;
  33.   a = 0;
  34. }
  35. return a;
  36. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-7-28 00:14:36 | 显示全部楼层
那为c++高手帮我解释一下。为什么双精度回出现小数点而整型就出现负数。以上是源代码。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-7-28 11:40:45 | 显示全部楼层
你输入的数太大了,整数装不下,所以就是负数了。
而double的输入就是正确的,因为他用的是科学记数法,
2.58e+13就是2.58*10的13次方。
估计你在输大一点double也会显示负数了,那就要用其它方法勒。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-7-28 22:26:36 | 显示全部楼层
万分感谢
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-7 08:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表