黑马程序员技术交流社区
标题:
printf(“%d”,12.0 % 2); 为什么会报错啊?
[打印本页]
作者:
sc33370
时间:
2016-6-22 21:03
标题:
printf(“%d”,12.0 % 2); 为什么会报错啊?
printf(“%d”,12.0 % 2); 为什么会报错啊?
作者:
FFFF001
时间:
2016-6-22 21:36
本帖最后由 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;
}
作者:
blackcard
时间:
2016-6-22 22:22
1.求余只出现在整形计算中
2.浮点数所谓的求余,一般叫求模(并不是很理解这个内容)
3.进行计算的时候尽量避免不同的数据类型进行计算,如果一定要进行计算,那么最好先统一好数据类型(包括需要显示的结果)
这里我建议改成 printf(“%d”,(int)12.0 % 2),这样就可以运行了
作者:
sc33370
时间:
2016-6-22 23:11
FFFF001 发表于 2016-6-22 21:36
% 是针对整数运算的,所以会报错。浮点运算没有 % 一说。
例如 12 除以 2,那么商为 6,余数为 0,而 % 就 ...
多谢大神。。。。。。。
作者:
SSIrreplaceable
时间:
2016-6-23 08:09
求余运算符的操作数只能是整数。
作者:
wzg682735
时间:
2016-6-23 11:01
同意楼上,再说编译器也会给出报错信息呀!!1{:2_34:}
作者:
M.W
时间:
2016-6-23 11:30
%是取模运算符,同意一楼
作者:
lijunyusmile
时间:
2016-7-4 21:49
是的,求余只能是整数
作者:
M.W
时间:
2016-7-4 21:55
float / int == int 想一下这样是不是错的
作者:
jilaiyuan
时间:
2016-7-4 22:48
一楼正解。%只能用于两个整数
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2