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

📄 mathutil.java

📁 OA典型例子
💻 JAVA
字号:
package com.sure.util;

public class MathUtil {
	public static void main(String[] args) {
		System.out.println(round(12.41d,2));
		System.out.println(round(12.55d,2));
		System.out.println(round(0.123,0));
		System.out.println(round(12.5d,0));
		System.out.println(round(-12.4d,0));
		System.out.println(round(-12.5d,0));
	}

	/*
	 * 四舍五入法,截位函数
	 * input:s="1153.2512" p = -2;output:1200
	 * input:s="1111.2552" p = 2;output:1111.26
	 */
	public static double round(double d, int p) {
	  return Double.parseDouble(round(String.valueOf(d), p));
	}


	private static String round(String s, int p) {
	  char sign = '+';

	  ParseInfo pi = parseExponentialNumber(s);

	  if (s.charAt(0) == '-') {
		pi.integralPart = pi.integralPart.substring(1);
		sign = '-';
		pi.radixPointPos--;
	  }

	  if (pi.integralPart.charAt(0) != '0') {
		pi.integralPart = "0" + pi.integralPart;
		pi.radixPointPos++;
	  }

	  String spoj;

	  spoj = pi.integralPart + pi.decimalPart;

	  if (p >= pi.decimalPart.length())
		return s;
	  if (p + pi.radixPointPos < 1)
		return "0";

	  pi.integralPart = spoj.substring(0, pi.radixPointPos + p);
	  pi.decimalPart = spoj.substring(pi.radixPointPos + p);

	  char z = pi.decimalPart.charAt(0);

	  if (z > '4') {
		int length = pi.integralPart.length();
		long b = Long.parseLong(pi.integralPart);
		b = b + 1;
		pi.integralPart =
			rightAppendChar("0", '0', length - String.valueOf(b).length())
			+ String.valueOf(b);

		if (String.valueOf(pi.integralPart).length() > length)
		  pi.radixPointPos++;
	  }

	  if (pi.integralPart.length() < pi.radixPointPos)
		pi.integralPart =
			rightAppendChar(pi.integralPart, '0', pi.radixPointPos);

	  s =
		  pi.integralPart.substring(0, pi.radixPointPos)
		  + "."
		  + pi.integralPart.substring(pi.radixPointPos)
		  + "E"
		  + pi.exponentialPart;
	  return sign + s;

	}

	private static ParseInfo parseExponentialNumber(String s) {
	  int exponentialPos;

	  ParseInfo pi = new ParseInfo();

	  exponentialPos = s.indexOf("E");
	  if (exponentialPos != -1) {
		pi.exponentialPart = s.substring(exponentialPos + 1);
		s = s.substring(0, exponentialPos);
	  }

	  pi.radixPointPos = s.indexOf(".");
	  if (pi.radixPointPos != -1) {
		pi.decimalPart = s.substring(pi.radixPointPos + 1);
		pi.integralPart = s.substring(0, pi.radixPointPos);
	  }
	  else {
		pi.integralPart = s;
		pi.radixPointPos = pi.integralPart.length();
	  }

	  return pi;

	}


	private static String rightAppendChar(String s, char c, int length) {
	  int n = length - s.length();

	  for (int i = 0; i < n; i++)
		s = s + c;

	  return s;
	}
}

  class ParseInfo {
	String integralPart = "";
	String decimalPart = "";
	String exponentialPart = "0";
	int radixPointPos;
	ParseInfo() {
	}
  }

⌨️ 快捷键说明

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