我正試圖扭轉一些操作。逆向操作
我的輸入是
1. 14
2. 8
3. 10
我的結果是
1. 0.14
2. 0.8
3. 0.1
代碼
token = 14
val = Double.parseDouble(token);
int count = countDigits(val);
val = val/Math.pow(10, count);
System.out.println("val "+val);---> results 0.14
private static int countDigits(double value) {
int count = 0;
while (value > 1) {
value = value/10;
count++;
}
return count;
}
殼體1
對於10我洛吉c是錯誤的。 如果我的值是10,我得到的結果是1.0而不是.1
我正在嘗試while(值> 1),但是一旦我添加=我沒有得到正確的結果。
情況下2
現在我需要0.14轉換回14 .8至8
什麼將是最好的選擇嗎?
我是否應該計算小數點後的位數並與Math.pow或其他更好的方法相乘。 是否可以計算小數點?
你的猜測聽起來是正確的。你試過了嗎?它會產生預期的結果嗎? –
您需要使用BigDecimal。 double不能準確地將所有基數爲10的數字表示爲分數(因爲它是具有浮點的二進制分數),所以無論您使用哪種算法,它都不適用於所有數字(並且上述算法也不適用於所有數字) –