A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

printf(“%d”,12.0 % 2); 为什么会报错啊?

9 个回复

正序浏览
一楼正解。%只能用于两个整数
回复 使用道具 举报
M.W 中级黑马 2016-7-4 21:55:29
9#
float / int == int 想一下这样是不是错的
回复 使用道具 举报
是的,求余只能是整数
回复 使用道具 举报
M.W 中级黑马 2016-6-23 11:30:06
7#
%是取模运算符,同意一楼
回复 使用道具 举报
同意楼上,再说编译器也会给出报错信息呀!!1{:2_34:}
回复 使用道具 举报
求余运算符的操作数只能是整数。
回复 使用道具 举报
sc33370 来自手机 中级黑马 2016-6-22 23:11:58
板凳
FFFF001 发表于 2016-6-22 21:36
% 是针对整数运算的,所以会报错。浮点运算没有 % 一说。

例如 12 除以 2,那么商为 6,余数为 0,而 % 就 ...

多谢大神。。。。。。。
回复 使用道具 举报
1.求余只出现在整形计算中
2.浮点数所谓的求余,一般叫求模(并不是很理解这个内容)
3.进行计算的时候尽量避免不同的数据类型进行计算,如果一定要进行计算,那么最好先统一好数据类型(包括需要显示的结果)
这里我建议改成 printf(“%d”,(int)12.0 % 2),这样就可以运行了
回复 使用道具 举报
本帖最后由 FFFF001 于 2016-6-22 21:44 编辑

% 是针对整数运算的,所以会报错。浮点运算没有 % 一说。

例如 12 除以 2,那么商为 6,余数为 0,而 % 就是求余数,即 12 % 2 的结果就是 0
可以调用这个函数 fmod(),实现小数的取余运算。代码如下:
//
//  main.c
//  FF-6-2203
//
//  Created by ya on 16/6/22.
//  Copyright © 2016年 FF. All rights reserved.
//

#include <stdio.h>
#include <math.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");

   
    // fmod() 用来对浮点数进行取模(求余)
    // 代码如下:
    float a = 12.2;
    float b = 2.1;
   
    printf("a %% b : %f\n", fmodf( a, b));
   
    printf("a %% b = %d\n", 122 % 21);
   
    // 拓展
    // 这个函数还可以取得某个数的小数点后的部分。
    // 代码如下:
    float f = 1.234;
    printf("%f\n", fmodf( f, (int)f));
   
    return 0;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马