Java Agroup编号格式2745至“2.7”k
我想转换数字,例如:2745到2.7 我有一个双精度的数字,可以是1或10000000 我想用数字1000来做这件事。Java Agroup编号格式2745至“2.7”k,java,android,numbers,Java,Android,Numbers,我想转换数字,例如:2745到2.7 我有一个双精度的数字,可以是1或10000000 我想用数字1000来做这件事。 我能做什么 数字大于1000是否意味着数字大于1000?我能做什么?是的,我的意思是大于1000。该解决方案在数字小于1.000.000时有效,但例如2756564返回:2.8kk我如何修复?是否相同:|187564663返回187.5kkReally,预期的结果是这样的:当超过1000,k和超过百万m时,返回187.5M,但从不重复字母。我们能做到吗?顺便说一句,非常感谢。我
我能做什么 数字大于1000是否意味着数字大于1000?我能做什么?是的,我的意思是大于1000。该解决方案在数字小于1.000.000时有效,但例如2756564返回:2.8kk我如何修复?是否相同:|187564663返回187.5kkReally,预期的结果是这样的:当超过1000,k和超过百万m时,返回187.5M,但从不重复字母。我们能做到吗?顺便说一句,非常感谢。我添加了另一种方法,不确定我是否理解正确
private static String rounding(int i) {
if (i < 1000 && i > -1000) return Integer.toString(i);
final DecimalFormat df = new DecimalFormat("#.#");
final DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
df.setDecimalFormatSymbols(symbols);
df.setRoundingMode(RoundingMode.DOWN);
String prefix = "-";
if (i < 0) i = -i;
else prefix = "";
if (i < 1000000) return prefix + df.format((double) i / 1000) + "k";
else if (i < 1000000000) return prefix + df.format((double) i / 1000000) + "M";
else return prefix + df.format((double) i / 1000000000) + "G";
}
private static String roundToKilos(int i) {
if (i < 1000 && i > -1000) return Integer.toString(i);
final DecimalFormat df = new DecimalFormat("#.#");
final DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
df.setDecimalFormatSymbols(symbols);
df.setRoundingMode(RoundingMode.DOWN);
final StringBuilder sb = new StringBuilder();
final boolean negative = i < 0;
if (negative) i = -i;
int divider = 1000;
double d = 0;
while (i / divider >= 1) {
d = (double) i / divider;
divider *= 1000;
sb.append("k");
}
sb.insert(0, df.format(d));
if (negative) sb.insert(0, "-");
return sb.toString();
}