2010-11-22 53 views
1

我想實現或使用一些智能小數點切斷的庫。如何在Java中做智能小數點切斷?

我的意思是說,我想得到:從3.456432 - > 3.4,從0.0000023232432 - > 0.000002和從0.000000000001 - > 0.0(或類似的東西)。我需要這個功能來獲得方便的用戶GUI。

因此我需要減少不等於零的位數。我需要保留1-3個最重要的數字,其他的設置爲零。

+3

如果你四捨五入,那麼3.456432應該舍入到3.46。 – DwB 2010-11-22 18:56:26

+6

看來你需要弄清楚你的意思是「智能切斷」。之後的實施應該很容易。從你的例子來看,你聽起來像是想要對一定數量的有效數字和一定的絕對精度進行舍入? – Cascabel 2010-11-22 18:57:45

回答

1

如果它有任何幫助,可以使用以下方法將double加到指定的有效數字位數上。然而,在標準API中沒有以合理的方式輸出結果的功能:

private static double round(double v, int sigDigits) { 
    double f = Math.pow(10, Math.ceil(Math.log10(Math.abs(v))) - sigDigits); 
    return Math.round(v/f)*f; 
} 
2

你看過DecimalFormat API嗎?

DecimalFormat是一個具體子類的NumberFormat 格式化十進制 號碼。它具有多種功能 ,旨在使解析 和格式數字在任何區域設置, 包括支持西方,阿拉伯語, 和印度數字。它還支持 不同種類的數字,包括 整數(123),定點數 (123.4),科學計數法(1.23E4), 百分比(12%)和貨幣 金額(123美元)。所有這些可以是 本地化。

1

自Java 5以來,java.util有一個Formatter類,它可以執行您所需的操作。