2015-04-14 192 views
2

所以我的計算器給我的答案像30.122345353或類似的東西。Android計算器數字四捨五入

問題 哪能它送到30.122? 這是我的代碼的一部分。我需要它來圓什麼來自應答(ANS + 「」)

這是我的代碼

if (v.getId() == R.id.Badd) if (num2 == 0) flag = true; 
    else ans = 2 * num1; 
    tv2.setText(ans + ""); 

回答

1

您可以使用DecimalFormat這樣的 -

DecimalFormat decimalFormat = new DecimalFormat("#0.###"); 
decimalFormat.format(ans); 
1

可以使用DecimalFormater :)

DecimalFormat df=new DecimalFormat("0.000"); 
String formate = df.format(ans); 
double finalValue = (Double)df.parse(formate) ; 

這應該可以解決您的問題。但是,如果你想要更多的幫助,這個問題已經回答了在不同的崗位上StackOverflow的:Here

一切順利:)

請讓我知道結果的。

祝你好運!

+0

謝謝,但我究竟應該在哪裏輸入該代碼? – StenK

+0

嗨,有兩種方法可以做到這一點。您可以創建一個函數來將任意數字格式化爲3位小數,也可以將我向您顯示的代碼放在「tv2.setText」語句的上方。祝你好運:)讓我知道如果你需要其他的東西 – TejjD

+0

如果我只是複製你的代碼而不做其他任何事情,那麼它不會做任何事情。 – StenK

1

This solution提供了一種數字舍入到特定小數位數

的 的四捨五入雙爲int
+0

鏈接只有答案不鼓勵SO。 –

2

簡單的方法:

int result = ((int)(yourDouble+0.5)); 

或:

public Double roundMyValue(String value){ 
DecimalFormat df=new DecimalFormat("0.000"); 
return (Double)df.parse(df.format(value)) ; 
} 

或東西容易:

public Double roundMyValue(String value){ 
double current=Double.parseDouble(value); 
int temp = current*1000; 
return (Double)temp/1000; 
} 
+0

這不回答這個問題。 Sten正在四捨五入到小數點後三位。 –

1

除了其他答案之外,還可以通過將結果乘以10^n(其中n表示要實現的最後一個重要小數點)然後將其舍入(通過像數學家進行正確舍入後加0.5)然後用10^3回把它再次

也許這樣的方法會做的伎倆:

的Java:

public double rndMyNmb(double number,int decimalPoint); 
{ 
    number*=Math.pow(10,decimalPoint); 
    number=(int)(number+0.5); 
    return number/Math.pow(10,decimalPoint); 
} 

OFC你可以寫在方法內部的一切,一個班輪:

return (double)((int)(number*Math.pow(10,decimalPoint)+0.5)/Math.pow(10,decimalPoint)); 
+0

謝謝,但我真的不明白我在哪裏寫代碼:/ im new在這個 – StenK

+0

可以說你的號碼存儲的值被稱爲:myNumber –

+0

然後你可以使用我提供的方法你:'myNumber = rndMyNmb(myNumber,n); ''對於n只是寫出你想要回來的小數的數量......那就是所有的魔法:) –