[英]String format a double to a maximum number of character in java
如标题所述,我想在 java 中写入一个具有最大字符数的字符串。
好吧,实际上是一个确切数量的字符,但我可以用给定的 X 将它包装在String.format("%Xs", ...)
中以填充缺失的字符。
请注意,在 SO 和互联网上有很多与此相关的问题,但我找不到与 java 完全相同的问题。
我想到的是写
=> 有没有实用的工具可以做到这一点或类似的东西?
这就是我现在所拥有的,并不完美,但我已经花了足够的时间。
这个想法是Double.toString
正在做我想要的,但长度固定(也许有人知道如何配置该长度?)。 所以我使用它并在必要时删除小数
/** write a double to a string of exact given length (but for some extreme cases) */
public static String doubleToString(double x, int length) {
String str = Double.toString(x);
if(str.length() <= length){
return org.apache.commons.lang.StringUtils.repeat(" ", length - str.length()) + str;
} else if(str.contains("E")){
String[] split = str.split("E");
String num = split[0];
String exp = split[1];
return removeDecimal(num, length - exp.length()-1) + 'E' + exp;
} else {
return removeDecimal(str, length);
}
}
// remove trailing decimal of a double as string such as xxx.yyyy
private static String removeDecimal(String doubleStr, int length){
int dotIndex = doubleStr.indexOf('.');
return doubleStr.substring(0, Math.max(dotIndex+1, length));
}
Take a look at BigDecimal ( https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html ) I use new DecimalFormat("0.00") if我想确保始终显示两位小数,例如 1000.5 将显示为 1000.50。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.