大家好我需要帮助计算和显示比率结果。
所以这是我正在处理的示例代码:
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,但它不支持
答案 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=0
为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);
<强> P.S。强>
您也可以从中学到一些东西:How to convert floats to human-readable fractions?