c++中这道题为什么保留小数点后六位?而不是314.15?

如题所述

第1个回答  2018-01-15
在格式化输出中,%f默认输出小数点后六位
第2个回答  2018-01-13
因为float精确到6位,如果用%g的话就是后面没有多余的0
第3个回答  2018-01-12
%f默认小数点后6位吧追问

那%d呢

追答

%d是整数,但是%d不能用来输出float

输出格式表一定要和后面的数据对应,要不然容易溢出

追问

......

必须写出小数点后六位?

%d必须写出小数点后16位?

float最多显示几位?就是有效位

我刚刚学这些东西有点头晕

追答

把格式控制和类型精度搞混了吧?

实际上printf中的%f格式,是不需要“l”前缀的,简单说就是%f匹配double的输出

那为啥float也可以匹配呢,因为printf后面是可变参数域(就是声明中的“...”),往这个地方传递float类型的值,会自动提升为double

而有的编译器是认%lf的输出格式的,主要是兼容一些习惯,但printf的文档里是没有的,即“l”前缀并不能应用于f(以及类似f的浮点数的输出格式,e/E或g/G这种)

但并不是所有编译器都这么支持,严格点还是用%f好

作者:冒泡
链接:https://www.zhihu.com/question/59720949/answer/168924657
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

第4个回答  2018-01-11
默认输出保存到小数点后6位,可以自己修改保存位数,如想保存3位,就把 %f 改成 %.3f追问

因为float吗?但是如果换成double呢?是后十二位吗

第5个回答  2018-01-15

在这个编译环境下%f输出六位小数

#include <bits/stdc++.h>
#define PI 3.1415
using namespace std;

  int main(){
   float r,cyc;
   r=10.0;
   cyc=PI*r*r;
   printf("%f\n",cyc);
  }

而且这里的PI不精确

本回答被网友采纳

c++中这道题为什么保留小数点后六位?而不是314.15?
在格式化输出中,%f默认输出小数点后六位

相似回答