如何乘以* 10 ^( - 20)。我找不到任何對數函數,所以我希望會有一些其他的函數用於乘以非常小或非常大的數字
回答
我不會使用日誌功能,我會用Math.pow
double d = a * Math.pow(10, -20);
Java支持浮點文字,所以你可以寫:'a * 1.0e-20' – Douglas
您可以使用BigDecimal類,它可以存儲較大的值用於計算。
爲什麼這個答案給出了-1? OP在哪裏提到浮點值?這個問題最近有過修改嗎?即使他使用的是浮點數,對非常小的數字進行計算並使用浮點數也會導致很多問題,您可以通過使用類BigDecimal來避免這些問題。這是關鍵,要保持準確性並避免浮點運算出現的問題。 – Asaf
@JimLewis - 在使用浮動/雙精度進行計算時,沒有使用BigDecimal的預防 - 相反,它更安全並減少了使用浮點數和雙精度類型的缺陷。看看[這裏](http://www.ibm.com/developerworks/java/library/j-jtp0114/)或[這裏](http://stackoverflow.com/questions/6320209/javawhy-should-我們使用bigdecimal而不是double-in-the-real-world) –
@inistel:我被你的原始答案中的第一句話所誤導,其中指出:「這個類表示不變的整數長度。」但我現在看到它也可以表示非整數。我仍然認爲這不是OP應該研究的解決方案,但我會很高興地取消掉落。 –
Java doubles
覆蓋範圍4.9 * 10^-324至1.7 * 10^308,正數或負數。如果您的數字在該範圍內,並且您很樂意使用浮點精度,則可以使用正常的*
運算符。
Math.log
方法的文檔是here。
- 1. MATLAB:非常小的數字除以非常小的數字
- 2. 尋找兩個非常大的數字乘以一個非常大的數字的模數
- 3. 使用非常大或非常小的數字時,scipy.optimize.fmin_slsqp存在問題
- 4. 對於非常大的數字執行nCr和逆階乘(MODm)
- 5. 非常數大小的結構數組
- 6. 數字限制 - 乘以非常大的常量時是否有限制?
- 7. 最小的整數大於非常大的數
- 8. 顯示非常大的數字,用byte []
- 9. C++ - 一個非常非常大的數字
- 10. 在C++中使用非常大的數字的函數
- 11. 在IOS中相乘兩個非常大的數字
- 12. 非常函數使用常量性
- 13. 非常大在一個非常大的B分數
- 14. Exponentiate非常大的數字中的R
- 15. 查找非常大的數字
- 16. 增加非常大的數字在VB.NET
- 17. C++中功耗非常大的數字
- 18. decimal.InvalidOperation,DivisionImpossible非常大的數字
- 19. 處理非常大的數字
- 20. 如何排序非常大的數字
- 21. BigDecimal.movePointRight()掛起非常大的數字
- 22. 非常大的數字產品
- 23. Streamtokenizer讀取非常大的數字?
- 24. vb.net中非常大的數字
- 25. ember.js對於大數據非常緩慢
- 26. 的TeeChart:舍入數字例外對於非常大的數據
- 27. 爲非常大的數字計算Eulers Totient函數JAVA
- 28. 非常非常長的小數的算術運算
- 29. Python:數字範圍非常大?
- 30. 哪個是用於執行涉及非常大的數字
爪哇'doubles'覆蓋範圍4.9 * 10^-324〜1.7 * 10^308,陽性或陰性。夠了嗎?如果是這樣,你可以使用普通的'*'運算符。 – Douglas
數學實用課有很多對數方法,但我支持道格拉斯的評論,如果這是一個答案,我會對它投票。 –
你的意思是乘以1e-20? –