| | |
| | | if (selecthd.get(i).get("Q") == null) { |
| | | texta += "流量暂无数据、"; |
| | | } else { |
| | | DecimalFormat dfl = new DecimalFormat("#0.000"); |
| | | texta += "流量" + Q + "立方米每秒;"; |
| | | //DecimalFormat dfl = new DecimalFormat("#0.000"); |
| | | //texta += "流量" + Q + "立方米每秒;"; |
| | | String vc = formatSignificantDigit(Q); |
| | | texta += "流量" + vc + "立方米每秒;"; |
| | | } |
| | | } |
| | | } |
| | |
| | | if (selecthd.get(i).get("Q") == null) { |
| | | texta += "流量暂无数据"; |
| | | } else { |
| | | DecimalFormat dfs = new DecimalFormat("#0.000"); |
| | | texta += "流量" + Q + "立方米每秒;"; |
| | | String vc = formatSignificantDigit(Q); |
| | | texta += "流量" + vc + "立方米每秒;"; |
| | | } |
| | | } |
| | | } |
| | |
| | | texta += "流量暂无数据;"; |
| | | } else { |
| | | //DecimalFormat dfs = new DecimalFormat("#0.000"); |
| | | texta += "流量" + Q + "立方米每秒;"; |
| | | String vc = formatSignificantDigit(Q); |
| | | texta += "流量" + vc + "立方米每秒;"; |
| | | } |
| | | } |
| | | } |
| | |
| | | return R.data(list); |
| | | |
| | | } |
| | | public static int magnitude(Double price){ |
| | | if (price == 0.0) {return 0;} |
| | | int fac; |
| | | Long i; |
| | | Long k = 10L; |
| | | if (price > 1) { |
| | | i = price.longValue(); |
| | | fac = 0; |
| | | while (i / k != 0L) { |
| | | fac++; |
| | | k *= 10; |
| | | } |
| | | } else { |
| | | fac = -1; |
| | | while (price * k < 1) { |
| | | fac--; |
| | | k *= 10; |
| | | } |
| | | } |
| | | return fac; |
| | | } |
| | | /** |
| | | * 数字格式化 - 最少保留{num}位有效数字 - 保留 {min}~{max} 为小数 - format02 |
| | | */ |
| | | public static String formatSignificantDigit(Double price) { |
| | | int min = 2; |
| | | int max= 8; |
| | | int num = 3; |
| | | boolean sign = false; |
| | | Double rate = 1.0; |
| | | Double value = price * rate; |
| | | int level = magnitude(Math.abs(value)); |
| | | int count = Math.max(min, Math.min(max, num - level - 1)); |
| | | return String.format("%"+(sign?"+": "")+"."+count + "f", value); |
| | | } |
| | | } |