decimal.h

source: wtcpp/folder98/folder02/folder1/file07.md

/*!
 * \file decimal.h
 * \project	WonderTrader
 *
 * \author Wesley
 * \date 2020/03/30
 * 
 * \brief 浮点数辅助类,主要用于浮点数据的比较
 */
#pragma once
#include <math.h>

// 在 `decimal` 命名空间中定义各种浮点数处理方法
namespace decimal
{
	const double EPSINON = 1e-6;
	// 四舍五入
	inline double rnd(double v, int exp = 1)
	{
		return round(v*exp) / exp;
	}
	// 等于
	inline bool eq(double a, double b = 0.0)
	{
		return(fabs(a - b) < EPSINON);
	}
	// 大于
	inline bool gt(double a, double b = 0.0)
	{
		return a - b > EPSINON;
	}
	// 小于
	inline bool lt(double a, double b = 0.0)
	{
		return b - a > EPSINON;
	}
	// 大于等于
	inline bool ge(double a, double b = 0.0)
	{
		return gt(a, b) || eq(a, b);
	}
	// 小于等于
	inline bool le(double a, double b = 0.0)
	{
		return lt(a, b) || eq(a, b);
	}

	inline double mod(double a, double b)
	{
		return a / b - round(a / b);
	}
	
};