package cn.jingdianbao.popbao;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DigitalUtil {
public static void main(String[] args) {
System.out.println(getNumberFormat(1.567,false));
System.out.println(getNumber(1.5555, 2, true));
double pi=3.1415926535;
System.out.println(new DecimalFormat("0").format(pi));
System.out.println(new DecimalFormat("#").format(pi));
System.out.println(new DecimalFormat("0.00").format(pi));
System.out.println(new DecimalFormat("00.000").format(pi));
System.out.println(new DecimalFormat("#.##%").format(pi));
long c=299792458;
System.out.println(new DecimalFormat("#.#####E0").format(c));
System.out.println(new DecimalFormat("00.####E0").format(c));
System.out.println(new DecimalFormat(",###").format(c));
System.out.println(new DecimalFormat("光速大小为每秒,###米").format(c));
}
public static String getNumberFormat(Number number) {
return getNumberFormat(number, true);
}
public static String getNumberFormat(Number number,boolean isHalfUp) {
DecimalFormat dFormat = new DecimalFormat("0.00");
dFormat.setRoundingMode(isHalfUp?RoundingMode.HALF_UP:RoundingMode.DOWN);
return dFormat.format(number);
}
public static void getCountryFormat() {
Locale[] locales = NumberFormat.getAvailableLocales();
double myNumber = -1234.56;
NumberFormat form;
for (int j = 0; j < 4; ++j) {
System.out.println("=====================================FORMAT=============================");
for (int i = 0; i < locales.length; ++i) {
if (locales[i].getCountry().length() == 0) {
continue;
}
String countryName = locales[i].getDisplayName();
if (countryName.contains("中文")) {
System.err.print(countryName);
} else {
continue;
}
switch (j) {
case 0:
form = NumberFormat.getInstance(locales[i]);
break;
case 1:
form = NumberFormat.getIntegerInstance(locales[i]);
break;
case 2:
form = NumberFormat.getCurrencyInstance(locales[i]);
break;
default:
form = NumberFormat.getPercentInstance(locales[i]);
break;
}
if (form instanceof DecimalFormat) {
System.out.print(": " + ((DecimalFormat) form).toPattern());
}
System.out.print(" -> " + form.format(myNumber));
try {
System.out.println(" -> " + form.parse(form.format(myNumber)));
} catch (ParseException e) {
}
}
}
}
public static String fillStr(String oldStr, Integer length, String fillStr, boolean isRight) {
Objects.requireNonNull(oldStr, "oldStr不能为空!");
String format = String.format(isRight ? "%%-%ds" : "%%%ds", length);
format = String.format(format, oldStr);
String newStr = format.replace(" ", fillStr);
return newStr;
}
public static String getNumber(Number number) {
return getNumber(number, 2, true);
}
public static String getNumber(Number number, int scale, boolean isHalfUp) {
Objects.requireNonNull(number, "number 不能为空!");
isHalfUp = String.valueOf(number.doubleValue()).length() <= 3 ? true : isHalfUp;
if (isHalfUp) {
String format = String.format("%%.%sf", scale);
return String.format(format, number.doubleValue());
}
String numberRegx = String.format("-?\\d+(\\.\\d{%s})?", scale);
Matcher matcher = Pattern.compile(numberRegx).matcher(number.toString());
if (matcher.find()) {
String result = matcher.group();
if (!result.contains(".")) {
return String.format(String.format("%%.%sf", scale), Double.valueOf(result));
}
return result;
}
return "";
}
public static Integer binary2Ten(String binaryStr) {
Integer tenStr = Integer.parseInt(binaryStr, 2);
System.out.println(tenStr);
return tenStr;
}
public static String ten2Two(Integer tenInt) {
String binaryStr = Integer.toBinaryString(tenInt);
System.out.println(binaryStr);
return binaryStr;
}
public static String sixteen2Two(String sixteenStr) {
Integer num = Integer.parseInt(sixteenStr, 16);
String binaryStr = Integer.toBinaryString(num);
System.out.println(binaryStr);
return binaryStr;
}
}