关于C++取整
inta;floatb(11);//float可以是一个整数?a=b/4;以上公式让a不用四舍五入得到2这个结果吗?不行的话该怎么改?然后inta(11);a=(a-a%...
int a;
float b (11);//float可以是一个整数?
a = b / 4;
以上公式让a不用四舍五入得到2这个结果吗?不行的话该怎么改?
然后
int a(11);
a = ( a - a % 4 ) / 4;
也能得到2的结果吗?预想是:a = ( a - 3 ) / 4:a = 8 / 4:a = 2。
以上只有a的式中还可以再简化吗?例如a-a%4变为a%-4之类(乱七八糟。。。)
或者说a / 4的情况就系统会直接把数取整? 展开
float b (11);//float可以是一个整数?
a = b / 4;
以上公式让a不用四舍五入得到2这个结果吗?不行的话该怎么改?
然后
int a(11);
a = ( a - a % 4 ) / 4;
也能得到2的结果吗?预想是:a = ( a - 3 ) / 4:a = 8 / 4:a = 2。
以上只有a的式中还可以再简化吗?例如a-a%4变为a%-4之类(乱七八糟。。。)
或者说a / 4的情况就系统会直接把数取整? 展开
5个回答
展开全部
你说的好复杂啊。听不懂。
float 和int指的是存储数据的方式。不是定义数据
float是分为两个部分,一个部分用来数字,一个部门用来记小数点的位置
也就是科学计数法的一种。
int没有记小数点的部分,所以只能记整数。
float b (11);就是数字为11,小数点的位置是第二个数字之后。
a = b / 4; 由于a就是int,无法保存小数点的位置。所以只能保存整数,系统自动将小数点后面的数字取消了。
a / 4的取整问题是这样的。如果运算符两边都是整数的话,返回值就是整数。如果运算符一边是float类型数据的话,结果就是float类型。
求加分
float 和int指的是存储数据的方式。不是定义数据
float是分为两个部分,一个部分用来数字,一个部门用来记小数点的位置
也就是科学计数法的一种。
int没有记小数点的部分,所以只能记整数。
float b (11);就是数字为11,小数点的位置是第二个数字之后。
a = b / 4; 由于a就是int,无法保存小数点的位置。所以只能保存整数,系统自动将小数点后面的数字取消了。
a / 4的取整问题是这样的。如果运算符两边都是整数的话,返回值就是整数。如果运算符一边是float类型数据的话,结果就是float类型。
求加分
展开全部
11本身是一个int型,但是通过float b(11);后变成了float,因为中间发生了类型转换
因为b是float型,所以b/4也是float型的 而a是int的
所以a = b / 4; 是不对的
具体有一个规则:
int>>float>>double >>表示可转换为
2个类型的数作运算,取转换规则中最右的那个类型。
即 int=int/int float=int/float double=double/int (仅用除法举例)
如果 int a=11; int b=a/4;
那么 b=2;
如果 float a=11; float b=a/4;
那么 b=2.75
因为b是float型,所以b/4也是float型的 而a是int的
所以a = b / 4; 是不对的
具体有一个规则:
int>>float>>double >>表示可转换为
2个类型的数作运算,取转换规则中最右的那个类型。
即 int=int/int float=int/float double=double/int (仅用除法举例)
如果 int a=11; int b=a/4;
那么 b=2;
如果 float a=11; float b=a/4;
那么 b=2.75
追问
还有几点我还没搞清楚。
1、究竟a/4得到的2.75是不是不会四舍五入直接就取2?
2、照你说的a不能直接靠=把b的2.75赋值给a?那要用怎样的公式?
3、最后照你看我的第二条程序a = ( a - a % 4 ) / 4还可能再简化吗?
追答
如果 b=2.75
想取整数部分的话这样做
int a=(int)b; 这样代表把b强制转换成int
如果 int a=11;
a=a/4;
a就是2了
有时候你会发现 double a=11;
int b=a;
居然没错误。
这是因为编译器规则不同的问题,其实原则上这样做的错的,
很明显11/4=2.75
如果你想要2.75这个值
那么 double b=(double)11/4;
如果只需要2
那么 int b=11/4;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在C++中整数/整数所得的结果一定是整数。只有当浮点数(float)/浮点数或者是浮点数/整数或者整数/浮点数时,所得的结果是浮点数,这里浮点数的意思你只要理解成是小数,上面因为a是定义成整数的,因此a/4结果一定是整数,即使,当a=11,11/4本来应该是小数的,系统也会自动将其取整,另外建议你去看一本基础的C的书吧,你疑惑的问题都是C中最基础的问题,C和C++语法的基础部分差不多,看了C的书,在看C++的程序会很好理解的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c++中余数运算(%)仅限于整数。这种小数除以整数的情形,原本就不该用%...还是先浮点除,商取整,再(被除数-商*除数)=余数
吧。
吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询