关于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的情况就系统会直接把数取整?
展开
 我来答
GiraKoo
2012-11-24 · 还没有任何签名哦
GiraKoo
采纳数:3949 获赞数:11110

向TA提问 私信TA
展开全部
你说的好复杂啊。听不懂。
float 和int指的是存储数据的方式。不是定义数据
float是分为两个部分,一个部分用来数字,一个部门用来记小数点的位置
也就是科学计数法的一种。
int没有记小数点的部分,所以只能记整数。

float b (11);就是数字为11,小数点的位置是第二个数字之后。

a = b / 4; 由于a就是int,无法保存小数点的位置。所以只能保存整数,系统自动将小数点后面的数字取消了。

a / 4的取整问题是这样的。如果运算符两边都是整数的话,返回值就是整数。如果运算符一边是float类型数据的话,结果就是float类型。

求加分
夜神月YOONA
推荐于2017-11-25 · TA获得超过339个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:251万
展开全部
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
追问
还有几点我还没搞清楚。
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;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友73bf53e
2012-11-24 · TA获得超过150个赞
知道答主
回答量:16
采纳率:0%
帮助的人:9.3万
展开全部
在C++中整数/整数所得的结果一定是整数。只有当浮点数(float)/浮点数或者是浮点数/整数或者整数/浮点数时,所得的结果是浮点数,这里浮点数的意思你只要理解成是小数,上面因为a是定义成整数的,因此a/4结果一定是整数,即使,当a=11,11/4本来应该是小数的,系统也会自动将其取整,另外建议你去看一本基础的C的书吧,你疑惑的问题都是C中最基础的问题,C和C++语法的基础部分差不多,看了C的书,在看C++的程序会很好理解的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彤乐怡矫智
2019-07-26 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:31%
帮助的人:868万
展开全部
c++中余数运算(%)仅限于整数。这种小数除以整数的情形,原本就不该用%...还是先浮点除,商取整,再(被除数-商*除数)=余数
吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Quiet狮子
2012-11-24
知道答主
回答量:64
采纳率:0%
帮助的人:26.4万
展开全部
你那个括号什么意思啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式