net.sourceforge.jweb.util.MathExtention Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jweb-common Show documentation
Show all versions of jweb-common Show documentation
本项目主要弥补在使用mybatis3+springmvc+jquery easyui快速搭建web应用系统是遇到的框架不足.
主要工作包括:
1,扩展了ApplicationContextAware,通过单例注入spring容器,提供spring容器外的bean获取方法
2,扩展了apache shiro框架,统一了安全结构
3,扩展了mybatis3拦截器,在两个拦截器中自动完成分页注入,实现内存分页。
4,分页设计数据库方言
5,提供了一个easyuigrid的模型
6,提供了java泛型的jstl
7, xml工具包等一些小工具
The newest version!
package net.sourceforge.jweb.util;
/**
*
* @author 毛安平
*
*/
public class MathExtention {
private MathExtention() {
}
/**
* 求两个数的最小公倍数
*
* @param n1
* 整型数1
* @param n2
* 整型数2
* @return 两个数的最大公约数
*/
public static int GCD(int num1, int num2) {
if (num2 == 0)
return 1;
int residue = num1 % num2;
if (residue == 0)
return num2;
return GCD(num2, residue);
}
/**
* 找一个整型数组的最大公约数
*
* @param value
* 一个整型的数组
* @return 最大公约数
* 如果没有找到,将返回0
*/
public static int GCD(int[] value) {
int min;
int index = 0;
int length = value.length;
for (int i = 1; i < length; i++)
if (value[i] < value[index])
index = i;// 记住以找的最小的数的下标
min = value[index];
for (int i = min; i > 0; i--) {
boolean isFound = true;
for (int j = 0; j < value.length; j++) {
if ((value[j] % i) != 0) {
isFound = false;
break;
}
}
if (isFound)
return i;
}
return 0;
}
/**
* 找一个整型数组的最大公约数
*
* @param arrayInt
* 一个整型的数组
* @return 最大公约数
* 如果没有找到,将返回0
*/
public static int GCD1(int[] arrayInt) {
int length = arrayInt.length;
if (length == 1)
return arrayInt[0];
if (length == 2)
return GCD(arrayInt[0], arrayInt[1]);
int temp = GCD(arrayInt[0], arrayInt[1]);
for (int i = 2; i < length; i++) {
temp = GCD(temp, arrayInt[i]);
}
return temp;
}
public static int LCM(int n1, int n2) {
return (n1 * n2) / GCD(n1, n2);
}
public static int LCM(int divs[]) {
if (divs.length == 1)
return divs[0];
int res = LCM(divs[0], divs[1]);
for (int i = 2; i < divs.length; i++)
res = LCM(res, divs[i]);
return res;
}
/**
* 获得一个正整数可以被2整除几次
*
* @param val
* @return
*/
public static int approximateLog2(int val) {
if (val <= 0)
return Integer.MIN_VALUE;
int ret = 0;
while (val != 1) {
val >>= 1;
ret++;
}
;
return ret;
}
/**
* 求一个正整数能被x整除几次
*
* @param val
* 被除数
* @param x
* 除数
* @return 正除结果
*/
public static int approximateLogx(int val, int x) {
if (val <= x || val < 0 || x <= 0)
return 0;
if (x == 1)
return val;
int ret = 0;
while (val >= x) {
val /= x;
ret++;
}
return ret;
}
/**
* 近似向上取整,如果小数部分大于0.1,则+1
*/
public static int approximateCeil(float value) {
return (int) value;
}
public static boolean approximateEquals(float num1, float num2, float rest) {
return StrictMath.abs(num1 - num2) < rest;
}
/**
* 已知直线上两点,和y,求x
*
* @return
*/
public static float linearX(float x1, float y1, float x2, float y2, float y) {
return ((x2 - x1) * (y - y1) + (y2 - y1) * x1) / (y2 - y1);
}
public static float min(float a, float b, float c) {
return Math.min(Math.min(a, b), c);
}
public static float max(float a, float b, float c) {
return Math.max(Math.max(a, b), c);
}
/*
* public static void main(String args[]){
* System.out.print(StrictMath.IEEEremainder(3.5, 2)); }
*/
}