round.c

来自「数学运算库源码」· C语言 代码 · 共 71 行

C
71
字号
/*							round.c * *	Round double to nearest or even integer valued double * * * * SYNOPSIS: * * double x, y, round(); * * y = round(x); * * * * DESCRIPTION: * * Returns the nearest integer to x as a double precision * floating point result.  If x ends in 0.5 exactly, the * nearest even integer is chosen. *  * * * ACCURACY: * * If x is greater than 1/(2*MACHEP), its closest machine * representation is already an integer, so rounding does * not change it. *//*Cephes Math Library Release 2.1:  January, 1989Copyright 1984, 1987, 1989 by Stephen L. MoshierDirect inquiries to 30 Frost Street, Cambridge, MA 02140*/#include "mconf.h"#ifdef ANSIPROTdouble floor ( double );#elsedouble floor();#endifdouble round(x)double x;{double y, r;/* Largest integer <= x */y = floor(x);/* Fractional part */r = x - y;/* Round up to nearest. */if( r > 0.5 )	goto rndup;/* Round to even */if( r == 0.5 )	{	r = y - 2.0 * floor( 0.5 * y );	if( r == 1.0 )		{rndup:		y += 1.0;		}	}/* Else round down. */return(y);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?