Java和J2ME计算比率

时间:2012-12-18 14:08:31

标签: java java-me double decimal

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

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

    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? total1 = a / b; 。所以我可以回电话来做一个“total2 =”圆形1的0.004“/ total1;

最后打印出结果并且是250。

小公式

11/2508 = 0.004

0.004 = 1 

1/0.004= 250

1:250

我曾尝试在j2me上使用decimalformat,但它不支持

2 个答案:

答案 0 :(得分: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更准确

答案 1 :(得分:1)

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

log10确定小数点的位置,log10=01

因此,首先计算小数点位置:

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);

<强> P.S。

您也可以从中学到一些东西:How to convert floats to human-readable fractions?