我有一個問題,我必須用長小數點打印。 如 1/3 = 0.33333333333333333333333333333333333333(非常長) 使用C時, 我們可以使用 printf(「%。30f」,a); 但我不知道該怎麼使用JavaJava十進制精度問題
做
3
A
回答
2
1
在Java中,你可以使用printf的還有,System.out.printf( 「...」,A,B,...)
9
您不會在C或Java中得到IEEE754二進制浮點數的精度小數位。你最好的選擇是使用BigDecimal
並以特定的精度執行算術。例如:
import java.math.*;
public class Test {
public static void main(String[] args) throws Exception {
MathContext context = new MathContext(30);
BigDecimal result = BigDecimal.ONE.divide(new BigDecimal(3), context);
System.out.println(result.toPlainString());
}
}
0
最簡單的解決方案:
double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d));
}
+0
不起作用。無法工作。錯過了這一點。 – EJP
+0
問題不好。但是,這個代碼的工作原理是最簡單的小數輪迴方式。 – shkschneider
0
double
的Java和C/C++ double
具有相同的精度。如果你要打印30位小數,你可以使用
double d = 1.0/3;
System.out.println("%.30f", d);
然而,雙不具有精度30位(在任何語言),你會得到一個舍入誤差。如果在Java中需要30位精度的小數位,則需要使用BigDecimal。
相關問題
- 1. 十進制鑄造和精度問題
- 2. 十進制精度問題DbParameter
- 3. Weka十進制精度
- 4. python十進制精度
- 5. C# - 十進制類型的十進制精度更高
- 6. Django十進制精度損失
- 7. Python中的十進制精度Scipy lfilter?
- 8. Python十進制類型精度錯誤
- 9. Python函數返回十進制精度
- 10. MathNet中的雙精度到十進制
- 11. C++中的十進制精度錯誤
- 12. 具有十進制精度的分數
- 13. pchisq增加十進制精度
- 14. 方案:十進制數的精度
- 15. 紅寶石十進制精度
- 16. 十進制到半精度浮點數
- 17. T-SQL十進制分割精度
- 18. 實體框架6十進制精度
- 19. C#double至十進制精度損失
- 20. Android雙精度十進制格式
- 21. C#十進制和雙精度
- 22. Excel VBA Excel十進制精度
- 23. 十進制格式問題Java
- 24. 將IEEE-754雙精度和單精度轉換爲十進制Java bug
- 25. 獲得準確的精度數十進制c後的精度#
- 26. Java BigDecimal精度問題
- 27. Java不會接受雙精度變量的十進制數
- 28. C#無限顯著十進制數(任意精度)不帶Java
- 29. 格式化java中浮點數upto 3十進制精度
- 30. 十進制剪切問題
*「Java小數精度問題」*有什麼問題?你忘了問一個。 (注意「我不能做X」不是問題。) –