C++中的double float对于运算结果的影响,比如如下代码

#include<stdio.h>
#include<math.h>
main()
{
double a,b,c,s,area;
printf("please type the langth:",a,b,c);
scanf("%f%f%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("the area is%f",area);
}
如果将double改成float 那么运算结果是正确的,double是错误的。求解答,必然采纳

第1个回答  2014-10-18
不加\/\/后那段显示结果是 1 ,加了\/\/后的显示 1.000000 。郁闷~~0( >__< )0~~ \r\n兄弟,没什么郁闷的,\r\n 首先是你错了,而不是计算机错了。你要知道float型数据的精度就是小数点后6位,所以当你自定义float a=1.0时,实际上计算机理解的是 float a=1.000000,他也是这么存放的。\r\n 其次cout << fixed << showpoint的意思就是控制cout使其输出小数点。\r\n 最后,关于你的补充问题。\“实现输入什么样的数字,输出什么样的数字\”,你要了解实际上计算机就是这么做的,关键问题在于你的输入什么样的数字这一点,你自己无法把握,如float他存的是小数点6位,所以不管你自定义1.0还是1.00都是一样的,int型不管是1.0还是1.00,结果计算机存的就是1\r\n 现在你明白了吗?这个问题实际上是控制输入的问题(很难办到,只能通过控制输出的办法)追问

你是什么意思?文不对题啊!

本回答被网友采纳
第2个回答  2014-10-18
如果改成double, 那么%f也要改成%lf本回答被提问者采纳

C++中float double的使用问题,如图!为啥double的输出不对呢?
4.0、3.14 这样写就是double;4.0f、3.14f 这样写就是float;运算时,低精度的会自动向高精度转换,比如有double时,int和float都会转换成double,你那个表达式中sqrt()返回一个double,所以其他int都转成了double,最终结果也是double。y1的结果是54,呵呵,54不就是54.0么,只是你显示到屏幕的...

c++中,float型和double型各保留几位有效数字?麻烦举几个例子,谢谢~
float fval = 1.32121212f;double dval = -45.67456554;double dval2 = -4.456511111111111;cout << fval << endl;cout << dval << endl;cout << dval2 << endl;输出的结果是:1.32121 -45.6746 -4.45651 参考资料:

C++中double和float类型精确度的一个有趣的问题~
其实float和double都无法精确表示0.9 + 0.1,只不过float的结果稍大于1,而double的结果稍小于1 你可以试验下从2.0到3.0循环,这时候float有3.0,而double没有

double和float输出一定都要加小数吗?
在 C\/C++ 语言中,double 和 float 类型的数值可以输出整数或者带小数点的实数。当输出一个 double 或 float 变量时,如果该变量包含小数部分,则应该使用格式化输出函数(如 printf() 函数)并指定相应的格式字符串(如 "%f"),以显示小数位。例如:c复制代码double d = 3.1415926;printf("%f\\n...

c++中的double是什么,有什么作用,烦举一例。
是float的两倍),而且其运算速度相对较慢。因此,在性能要求不高的情况下,通常优先选择float类型,以节省内存和加速计算。总的来说,double在C++中主要用于需要高精度计算的场景,如科学计算、金融分析等,但需权衡其对性能的影响。了解这些特性有助于你更有效地使用这个数据类型。

C语言中浮点数float和double输出的问题
float的精度是6到7位,就是说连整数部分有6位是可信的,再长了就是机器垃圾值了;double有16到17位是可信的,再多了也是机器垃圾值。下面的代码可说明这一问题。float型x的值从第8位2开始就是垃圾值了,尽管要求输出小数点后10位;double型y的值从第18位起也是垃圾值,尽管要注输出了小数点后20...

c++中的double是什么,有什么作用,烦举一例。
double(双精度浮点型)是计算机使用的一种资料型别。比起单精度浮点数(float),double(双精度浮点数)使用 64 位(8字节) 来储存一个浮点数。它可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1....

求大神给说下c++中的double和float类型
第一,float 和double表示的都是近似数,不是绝对准确的值,所以在运算过程中,会有精度上的丢失。 比如,原始数字为123.123456789, 经过一系列运算,+-*\/之后,再逆运算回来,很可能已经不是原来的值了。 更极端的例子是,float a=123.456789111223456 然后打印这个值,不同的编译器可能会给出不同...

c++中的double类型的精度问题怎么解决?
这本来就是近似的,要精度高就把π取精确点。acos(0)\/3.14159265358979*180应该是90.000000°了。include "stdio.h"#include "math.h"int main(int argv,char *argc[]){printf("%f\\n",acos(0)\/3.14159265358979*180);return 0;}运行结果:...

C++ float函数输出的结果是什么?
{float r, l, s;scanf("%f", &r);printf("S: %.2f\\n", PI*r*r);printf("L: %.2f\\n", 2*PI*r);return 0;} 程序问题有两点:1、 变量要先定义,赋值然后才能参与运算,所以要先输入r,才能计算s=pi*r*r 。2 、scanf("%lf",&r);中格式要使用%lf 。注意:double双精度型...

相似回答