⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 price_conv.c

📁 Nessus的应用与漏洞扫描技术的研究
💻 C
字号:
/* GDCHART 0.94b  PRICE_CONV.C  12 Nov 1998 *//* *  - price as float to a string (ostensibly for printing)*/#include <stdlib.h>#include <stdio.h>#include <ctype.h>#include <math.h>/* ----------------------------------------------------------------- *//* -- convert a float to a printable string, in form:             -- *//* --	W N/D                                                     -- *//* -- where W is whole, N is numerator, D is denominator          -- *//* -- the frac N/D is one of 2nds, 4,8,16,32,64,128,256ths        -- *//* -- if cannot convert, return str of the float                  -- *//* ----------------------------------------------------------------- */#define EPSILON		((1.0/256.0)/2.0)#define GET_DEC(x)	( (x) - (float)(int)(x) )char*price_to_str( float	price,			  int	*numorator,			  int	*demoninator,			  int	*decimal,			  char	*fltfmt )			/* printf fmt'ing str*/{    static char rtn[64];	int			whole = (int)price;	float		dec   = GET_DEC( price ),				numr;	/* float		pow( double, double ); */	/* caller doesn't want fractions*/	if( fltfmt )		{		sprintf( rtn, fltfmt, price );		*numorator = *demoninator = *decimal = 0;		return rtn;		}	numr = dec * 256;	/* check if we have a perfect fration in 256ths */	{			float	rdec = GET_DEC( numr );		if( rdec < EPSILON )			;							/* close enough to frac */		else if( (1-rdec) < EPSILON )	/* just over but close enough */			++numr;		else							/* no frac match */		{			sprintf( rtn, "%f", price );			*numorator = *demoninator = *decimal = 0;			return rtn;		}	}	/* now have numr 256ths */	/* resolve down */	if( numr != 0 )		{		int	cnt = 8;		while( (float)(numr)/2.0 == (float)(int)(numr/2) )			{			numr /= 2;			--cnt;			}		/* don't want both whole AND numerator to be - */		if( whole<0 && numr<0.0 )			numr = -numr;		*numorator = (int)numr;		*demoninator = (int)pow(2.0, (float)cnt);		*decimal = whole;		sprintf( rtn, "%d %d/%d", whole,								  (int)numr,								  *demoninator );		}	else		{		*numorator = *demoninator = 0;		*decimal = whole;		sprintf( rtn, "%d", whole );		}    return rtn;}

⌨️ 快捷键说明

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