0

大家好,我需要一些帮助来计算和显示比率结果。

所以这是我正在处理的示例代码:

    double a = 11;
    double b = 2508;
    double total1;
    double total2;

    total1 = a / b;

    System.out.println(total1);

现在我得到的结果是 0.0043859649122807015 。但是,我只需要小数点后三位的“0.004”,并且要计算比率,我需要将“0.004”四舍五入为 1,那么我该怎么做呢?

阶段2

    double a = 11;
    double b = 2508;
    double total1;
    double total2;

    total1 = a / b;

    System.out.println(total1);

    total2 = 1/total1; //1 is equal a rounded 0.004 then devided by 0.004

    System.out.println(total2);

但我不得不手动输入 1 来进行计算。有没有办法从第一次计算中存储总数 1?总计1 = a/b;. 所以我可以回叫它做一个“total2 =”A rounded 1 of 0.004”/total1;

最后打印出结果是250。

小公式

11/2508 = 0.004

0.004 = 1 

1/0.004= 250

1:250

我曾尝试在 j2me 上使用小数格式,但它不支持它

4

2 回答 2

1

你需要一个数字格式化程序

http://docs.oracle.com/javase/tutorial/java/data/numberformat.html

System.out.format("%.3f%n", pi);     // -->  "3.142"

也只是翻转你的公式。

2508/11 = 228

所以 1:228 比 1:250 更准确

于 2012-12-18T14:15:18.080 回答
1

您应该使用Math.round()Math.log10()

log10确定小数点的位置,具有log10=0for 1

所以,首先你计算小数点位置:

Math.log10(total1);

这会给

-2.357934847000454

用它来圆它Math.round()会给

-2

这是您在计算中使用的数字。

最终代码是

    double a = 11;
    double b = 2508;
    double total1;
    double total2;

    total1 = a / b;

    System.out.println(total1);

    // determining point location
    long l = Math.round(Math.log10(total1));

    System.out.println(l);

    // moving point right
    total1 = total1 * Math.pow(10, -l+1);

    System.out.println(total1);

    // rounding
    total1 = Math.round(total1);

    System.out.println(total1);

    // moving point back
    total1 = total1 / Math.pow(10, -l+1);

    System.out.println(total1);

    total2 = 1/total1; //1 is equal a rounded 0.004 then devided by 0.004

    System.out.println(total2);

附言

您还可以从中学到一些东西:如何将浮点数转换为人类可读的分数?

于 2012-12-18T14:23:54.447 回答