首页 > 其他分享 >C语言库函数round函数

C语言库函数round函数

时间:2024-10-20 12:19:25浏览次数:3  
标签:四舍五入 numbers double 浮点数 C语言 result round 库函数

简单使用:把浮点数四舍五入到整数

round函数定义在<math.h>头文件中,其原型为double round(double x);

round函数用于将浮点数四舍五入到最接近的整数

以下的C语言代码用round函数计算了不同浮点数的四舍五入值,并将结果打印出来

#include <stdio.h>
#include <math.h>
int main()
{
  	double numbers[] = {3.14, -3.14, 3.5, -3.5, 2.718, -2.718, 0.0};
	double result;
	for(int i = 0; i < 7; i++)
	{
		result = round(numbers[i]);
		printf("round(%.3f) = %.3f\n", numbers[i], result);
	}
	return 0;
}

输出结果为:

round(3.140) = 3.000
round(-3.140) = -3.000
round(3.500) = 4.000
round(-3.500) = -4.000
round(2.718) = 3.000
round(-2.718) = -3.000
round(0.000) = 0.000

例子中展示了round函数如何处理正数、负数和零的情况,以及当小数部分正好为0.5时的四舍五入规则

进阶使用:把浮点数四舍五入到两位小数

可以把传递的参数*100,然后返回值在/100,就可以四舍五入到两位小数了

#include <stdio.h>
#include <math.h>
int main()
{
  	double numbers[] = {2.134,2.135,2.136,2.144,2.145,2.146};
	double result;
	for(int i = 0; i < 6; i++)
	{
		result = round(numbers[i] * 100) / 100;
		printf("round(%.3f) = %.3f\n", numbers[i], result);
	}
	return 0;
}

输出结果为:

round(2.134) = 2.130
round(2.135) = 2.130
round(2.136) = 2.140
round(2.144) = 2.140
round(2.145) = 2.150
round(2.146) = 2.150

大家是不是会发现一个问题,2.135的千分位是5啊,为什么没有进一,反而舍去了呢,答案来了其实round函数的规则四舍六入五成双,不是简单的四舍五入

四舍六入五成双

四舍六入五成双是一种比较科学的计数保留方法,具体的保留方法为:

1.小于等于4的舍去

2.大于等于6的进一

3.等于5的话要看后面有没有有效数字,有的话进一,没有的话要按照5前面数字的奇偶来处理,若5前面为奇数则进一,若5前面为偶数则舍5不进。 

标签:四舍五入,numbers,double,浮点数,C语言,result,round,库函数
From: https://blog.csdn.net/vbnetcx/article/details/142911726

相关文章

  • C语言练习之猜数字游戏
    一游戏规则:1.在电脑上生成1-100的随机数2.玩家可以输入所猜数字,电脑根据输入数字做出猜大、猜小、猜对的反馈二游戏的实现:1.随机数的生成:1.1rand C语言的库函数提供了一个rand函数,它的头文件是stdlib.h,rand函数可以根据一个种子随机生成0-RAND_MAX(最少是32767)......
  • C语言小白 记录自己对一些概念的理解 若有错误 多包涵 若能指正 万分感激
    当你想将输入和判断输入一起做时可以用while((数组名[i]=getchar())!='\n')记得拿括号括起来辅助在写!=CG平台使用输入重定向输入测试数据,需要使用(ch=getchar())!=EOF判断字符串输入结束,如果使用(ch=getchar())!='\n'上传到CG平台后可能会超时。写oj的时候如......
  • Codeforces Round 977 (Div. 2)
    一万一参赛,赛时排名151A.MeaningMean简单贪心题。显然,排在越后面的数,除以2的次数越少。因此贪心地从小到大计算结果即为答案。#include<bits/stdc++.h>usingnamespacestd;constintN=55;intT,n,a[N];intmain(){ scanf("%d",&T); while(T--){ scanf......
  • C语言中的段错误(Segmentation Fault):底层原理及解决方法
    引言在C语言编程中,“段错误”(通常由操作系统信号SIGSEGV触发)是一种常见的异常情况,它表明程序试图访问不受保护的内存区域。本文将深入探讨段错误的原因、底层原理、常见情况以及如何调试和解决这类错误。段错误的定义段错误是一种运行时错误,通常由以下几种情况触发:访......
  • C语言_通讯录
    引言:当我们C语言语法大部分都学习完的情况下,可以尝试一些项目来提升自己,比如下面的这个通讯录。玩法介绍:我们需要对通讯录里面的个人信息进行增删查改以及排序等操作技能要求:学习完大部分的C语言语法知识。接下来我将创建三个文件:具备函数声明、宏定义、所需库函数的头......
  • 【趣学C语言和数据结构100例】
    【趣学C语言和数据结构100例】问题描述在带头结点的单链表中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,试编写算法以实现上述操作。试编写在带头结点的单链表中寻找一个最小值结点的高效算法(假设该结点唯一)设在一个带表头结点的单链表中,所有结点......
  • 数据结构C语言|队列相关
    队列普通队列与循环队列:结构体初始化队列判断队空入队出队检查队满循环队列链式队列:链式队列链式队列结构初始化判断是否为空入队出队遍历全部代码展示结构体typedefintElemType;#defineMaxSize10typedefstruct{ ElemTypedata[MaxSize]; //用静态......
  • C语言解决约瑟夫环(PTA链表)
    题意:就是N个人围成一个圈(想到循环),开始报数,报到一个指定的数p,则这个人出局,后延,比如本题的样例,第三个人报了3,则第四个人继续从1开始报数,一直循环下去,第七个人报完之后,再到第一个人,直到只剩下一个人,那么下一个出局的只剩下这个人。解题思路:我们看到,最后一个人报数之后,又回到了......
  • C语言 【操作符(上)】
        最开始提到C语言操作符,我还是有一些不屑的,这玩意有啥学的呀?今天静下心来阅读学习了一下操作符部分的知识,这部分还真得认真学习学习!下面我将操作符中一些比较关键的点进行罗列和详细说明。一来帮助我加深理解,二来希望能帮助到有缘点击进来的读者。1、算术操作符:+ ......
  • GJ Round
    前言:GJRound为学校内部模拟赛记7.13为Round1,在此之前的模拟赛较为混乱以后再说(可能记为Round0或者负数)目前正在倒序更新https://www.luogu.com.cn/article/a30ffmdbRound20(9.18)A......