Shinone+const 2022-09-27 04:53 采纳率: 92%
浏览 155
已结题

使用long double类型数据计算显示0

本来想通过换一个数据类型,从double换成long double来增加计算精度(不过后来发现double已经够了),结果发现计算结果都为零?

#include<stdio.h>
#include<math.h>
#define pai 3.141592
int main(void)
{
  double r;
   double area;
   double volumn;

  scanf("%lf",&r);
  printf("%lf\n",r);//打印出来为检验r是否正确输入了


  area = 4*pai*r*r;
  volumn = (4*pai*pow(r,3))/3;

  printf("%.6lf\n%.6lf",area,volumn);

 return 0;
}
运行结果:
输入:2
输出: 2.000000
          50.265472
           33.510315
Process returned 0 (0x0)   execution time : 1.165 s
Press any key to continue.


转换成long double后

#include<stdio.h>
#include<math.h>
#define pai 3.141592
int main(void)
{
  double r;
  long double area;
  long double volumn;

  scanf("%lf",&r);
  printf("%lf\n",r);


  area = 4*pai*r*r;
  volumn = (4*pai*pow(r,3))/3;

  printf("%.6lf\n%.6lf",area,volumn);

 return 0;
}

输入:2(以下为输出)
2.000000
0.000000
0.000000
Process returned 0 (0x0) execution time : 2.131 s
Press any key to continue.

无论输入什么数字,下面两个计算结果都为0.为什么会这样呢

展开全部

  • 写回答

5条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-27 06:00
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月27日
  • 创建了问题 9月27日