我正在编写一个函数,例如将1000替换为1K,依此类推。我不想在点后显示"00"
,所以我拆分了变量,如果第二部分等于“ 00”,则仅显示第一部分。
此工作与运行Android 10的模拟器上的预期工作相同。在我的真实设备(P4XL,Android 10)上,它崩溃并显示标题中的行。
为什么这样做?
public String number_uppercase(int input){
double input_double = (double) input;
if (input < 1000){
number_uppercase_cache = df.format(input_double);
number_uppercase_ending = "";
}
if (input >= 1000 && input < 1000000){
number_uppercase_cache = df.format(input_double/1000);
number_uppercase_ending = " K";
}
if (input >= 1000000 && input < 1000000000){
number_uppercase_cache = df.format(input_double/1000000);
number_uppercase_ending = " mio";
}
if (input >= 1000000000){
number_uppercase_cache = df.format(input_double/1000000000);
number_uppercase_ending = " mrd";
}
number_uppercase_split_part_1 = number_uppercase_cache.split("\\.")[0];
number_uppercase_split_part_2 = number_uppercase_cache.split("\\.")[1];
if(number_uppercase_split_part_2.equals("00")){
number_uppercase_output = number_uppercase_split_part_1 + number_uppercase_ending;
} else {
number_uppercase_output = number_uppercase_split_part_1 + "." + number_uppercase_split_part_2 + number_uppercase_ending;
}
return number_uppercase_output;
}
请尝试以下符合您目的的功能
private String formatNumber(long _number) {
if (_number< 1000)
return "" + _number ;
else
int exp = (int) (Math.log(_number) / Math.log(1000));
return String.format("%.1f %c", _number/ Math.pow(1000, exp), "kMGTPE".charAt(exp-1));
}