【C语言的小角落】--- 深度理解取余/取模运算

 Welcome to 9ilk's Code World

       

(๑•́ ₃ •̀๑) 个人主页:       9ilk

(๑•́ ₃ •̀๑) 文章专栏:     C语言的小角落 


本篇博客我们来深度理解取余/取模,以及它们在不同语言中出现不同现象的原因。


🏠 关于取整

🎵 向0取整

#include <stdio.h>
#include <windows.h>
int main()
{
  //本质是向0取整
  int i = -2.9;
  int j = 2.9;
  printf("%d\n", i); //结果是:-2
  printf("%d\n", j); //结果是:2
  int a = 5;
  int b = -5;
  printf("%d %d",a/2,b/2);
  system("pause");
  return 0;
}

测试结果:

我们发现测试结果中浮点数取整都是往0方向取整的:

其实在C库中有个trunc取整函数,也是向0取整:

🎵 向-∞取整

#include <stdio.h>
#include <math.h> //因为使用了floor函数,需要添加该头文件
#include <windows.h>
int main()
{
 //本质是向-∞取整,注意输出格式要不然看不到结果
  printf("%.1f\n", floor(-2.9)); //-3
  printf("%.1f\n", floor(-2.1)); //-3
  printf("%.1f\n", floor(2.9)); //2
  printf("%.1f\n", floor(2.1)); //2
  system("pause");
  return 0;
}

测试结果:

我们发现当调用floor函数取整时是结果都变小,往-∞方向取整

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值