2012-12-18 137 views
0

嗨,大家好,我需要一些幫助來計算和顯示比率結果。Java和J2ME計算比率

所以這裏是示例代碼我的工作:

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

    total1 = a/b; 

    System.out.println(total1); 

現在的結果我得到的是0.0043859649122807015。然而,我只需要小數點後三位的「0.004」,並計算出需要將「0.004」加1的比率,那麼我該怎麼做?

Phase2的

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; 。因此,我可以稱之爲回做一個「共2 = 「A四捨五入0.004 1」/共1;

最後打印結果出來,是250

小式

11/2508 = 0.004 

0.004 = 1 

1/0.004= 250 

1:250 

我試圖在J2ME上使用的DecimalFormat,但它不支持它

回答

1

你需要一個數字格式化

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

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

此外,只是flipwhat你的公式。

一十一分之二千五百零八= 228

所以1:228 比1更準確:250

+1

J2ME不支持格式化,反正是有出去轉轉呢? – Ket

+0

String [] patterns = new String [] {「#,#00.00#」,「0.0;(0.0)」, 「0。### E0」}; DecimalFormat格式=(DecimalFormat)DecimalFormat .getNumberInstance(); double value = -12.321; for(int i = 0; i exussum

+0

但我不知道爲什麼你會失去準確性,當你可以做2508/11直接比例? – exussum

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

附:

您也可以借鑑這樣的:How to convert floats to human-readable fractions?

+0

感謝您的輸入,我會嘗試您的方法:D – Ket