java如何使浮点数的用户友好百分比输出

Eri*_*rik 9 java

我有以下代码:

float fl = ((float)20701682/(float)20991474);  
Run Code Online (Sandbox Code Playgroud)

这给了我fl = 0.9861948.

我想转换0.98619482%,因为2%已经被下载.
我正在下载文件并计算进度.

任何帮助都会受到影响.

yur*_*rib 20

如果代码中有常量值,则应使用表示下载量和总大小的变量替换它们:

    float downloaded = 50;
    float total = 200;
    float percent = (100 * downloaded) / total;
    System.out.println(String.format("%.0f%%",percent));
Run Code Online (Sandbox Code Playgroud)

产量:25%


jeh*_*eha 16

我想你的意思是

int percentage = (1 - fl) * 100;
Run Code Online (Sandbox Code Playgroud)

计算百分比.

但是fl = 0.9861948这给了1(1.38052转换为int).

如果你想要2,你可以使用Math.ceil:

int percentage = (int) Math.ceil((1 - fl) * 100); // gives 2
Run Code Online (Sandbox Code Playgroud)


Jas*_*key 5

我在下面编写了两种方法将浮点数转换为以百分比显示的字符串:

//without decimal digits 
public static String toPercentage(float n){
    return String.format("%.0f",n*100)+"%";
}

//accept a param to determine the numbers of decimal digits
public static String toPercentage(float n, int digits){
    return String.format("%."+digits+"f",n*100)+"%";
}
Run Code Online (Sandbox Code Playgroud)

测试案例1:

public static void main(String[] args) {
    float f = 1-0.9861948f;//your number,0.013805211
    System.out.println("f="+f);//f=0.013805211
    System.out.println(toPercentage(f));//1%
    System.out.println(toPercentage(f,2));//1.38%
}
Run Code Online (Sandbox Code Playgroud)

测试案例2:

如果您想要 2%,请尝试输入这样的参数:

    float f = 1-0.9861948f;//your number,0.013805211
    f= (float)(Math.ceil(f*100)/100);//f=0.02
    System.out.println("f="+f);f=0.02
    System.out.println(toPercentage(f));//2%
    System.out.println(toPercentage(f,2));//2.00%
Run Code Online (Sandbox Code Playgroud)