c++ 输出不是小数 float a; a=5/18; cout<<a; 得出的结果为什么是0 ,而不是小数?

如题所述

因为5,18都是整数,所以5/18的结果也是按整数处理的,商为0,结果就是0,虽然最后赋值给了float类型,但在赋值之前,运算的结果已经是0了。
正确的写法:
a = 5.0 /18;
或a=(float)5/18;
或a=1.0*5/18;
这样,数据都会被转换为浮点类型进行计算,结果就正确了。追问

奥,原来这样, 那, 如果 a=5/18*1.0 会发生什么?

追答

结果=0。由于计算从左向右进行,所以先计算5/18,当作整数计算了,结果是0。

温馨提示:内容为网友见解,仅供参考
无其他回答

...float a; a=5\/18; cout<<a; 得出的结果为什么是0 ,而不是小数?_百 ...
因为5,18都是整数,所以5\/18的结果也是按整数处理的,商为0,结果就是0,虽然最后赋值给了float类型,但在赋值之前,运算的结果已经是0了。正确的写法:a = 5.0 \/18;或a=(float)5\/18;或a=1.0*5\/18;这样,数据都会被转换为浮点类型进行计算,结果就正确了。

C++程序中为什么用cout输出float或double型的数据,屏幕上不是小数而是...
cout跟printf是不同的,cout输出float或double,是会将小数点后非有效数字的0去掉的,而printf里面以%f输出规定是以6位小数输出,不管是不是有效数字

C++中double型数值计算结果为0为什么输出的不是0?
这是由于double类型的精度引起的。在C\/C++中,float和double类型,被称为浮点型。浮点型是C\/C++中用来存储实数的。而存储的值,并不是实际值,而是近似值。即,double类型和float类型存储的值均不是准确值,而是一个和准确值接近的值。这样,在计算中,就会有精度缺失的情况出现,运算越多,这个精度缺...

c++输出结果为啥都是0啊
cout<<p1.distance(p2)<<endl;}

c++程序求问,为什么结果是0
因为 int 类型的关系。int 类型会把小数部分截断,根据你的程序返回是 0.5,而变量 b 是 int 类型,会把 0.5 的小数部分截断,那么就剩下 0 ,所以结果是 0 。如果你变量 b 声明为 float 类型或者 double 类型,则结果是 0.5 。

C++ 中的数据怎样以浮点小数(而不是定点小数)输出,而不用科学计数...
C和C++提供的对齐函数挺好的嘛,使你的数据显示的时候很整齐,要不然显的很杂乱。想要达到一定的目的,常常是要做出相应的代价的。另外,就是在数据位数很多的时候如,0.00000123456789,即使是科学计数法也会默认的取6位有效数字,要想显示全部位数,要么setprecision(n),这样有些数据后面有你不想要的0:...

初学编程c++帮我分析下结果为什么没有小数
double division(double dividend, double divisor){ if(0 == divisor){ \/\/ 抛出异常,字符串“除数不能为0”throw string("除数不能为0");} else { return dividend \/ divisor;} }

为什么让c++中cout输出总是整数
c++默认输出六位有效数字 你可以试试增加头文件#include<iomanip> 然后cout<<setprecision(8)<<a;其中利用setprecision()控制,而且一直有效,直至下次改变

c++关于float的问题
因为float的精度有限,999.9并不能以二进制形式存储为一个有限小数,故而在从二进制浮点数转换到十进制时发生了精度丢失……

C++问题 输入一个浮点数,如果该浮点数没有小数部分?
按照题目要求编写的浮点数的C++程序如下 include<iostream> using namespace std;int main(){ float a;cin>>a;if(a==(int)a){ cout<<3*a;}else{ if(a>0){ cout<<(int)a;}else{ cout<<(int)a-1;} } return 0;}

相似回答