我想要一個過濾器來運行一個字符串,並從雙打中消除所有不需要的.0's。我已經嘗試過替換,但像8.02這樣的情況變成了82.Java刪除所有的案例.0
我有一種感覺,這已經做過,但我找不到任何幫助。
我正在尋找一種方法,將採取String
,例如:「[double] plus [double]等於[double]」,其中[double]是需要檢查的double冗餘小數。
在此先感謝!
我想要一個過濾器來運行一個字符串,並從雙打中消除所有不需要的.0's。我已經嘗試過替換,但像8.02這樣的情況變成了82.Java刪除所有的案例.0
我有一種感覺,這已經做過,但我找不到任何幫助。
我正在尋找一種方法,將採取String
,例如:「[double] plus [double]等於[double]」,其中[double]是需要檢查的double冗餘小數。
在此先感謝!
假設您有一個名爲s的字符串,其中包含您所描述的文本。簡單地做:
s = s.replaceAll("([0-9])\\.0+([^0-9]|$)", "$1$2");
你就完成了。
好吧,所以我編輯了幾次。現在它雖然工作!
非常感謝! – Confiqure 2012-01-05 00:58:25
不客氣:) – davogotland 2012-01-05 01:01:39
這很有趣。它工作得很好,但現在它修復了所有錯誤的最後一個數字。例如:「10.0 + 1.0 = 11。0「變成」10 + 1 = 11.0「。有什麼辦法可以解決這個問題? – Confiqure 2012-01-10 00:05:39
在將字符串構造成字符串之前,您不能拿走尾隨零嗎?通過這種方式,您可以使用之前發佈並被刪除的DecimalFormatter
方法。
NumberFormat formatter = new DecimalFormat("0.##");
String str = formatter.format("8.0200");
System.out.println(str);
如果他們回來,就給他們代碼。
這不適用於我需要的 – Confiqure 2012-01-05 00:55:26
您可以使用java.text.DecimalFormat對象執行此操作。
以下程序將從雙精度值的小數部分中刪除所有尾隨零。如果您的要求有所不同,您可能需要稍微修改它。
final public class Main
{
public static void main(String...args)
{
System.out.println("Enter how many numbers you want to check:->");
Scanner scan = new Scanner(System.in);
final double KEY_VALUE = 0.0;
final Double TOLERANCE = 0.000000000001d;
int n = scan.nextInt();
double[] a = new double[n];
for (int i = 0; i < n; i++)
{
a[i] = scan.nextDouble();
}
List<Double> newList = new ArrayList<Double>();
for (int k = 0; k < n; k++)
{
if (Math.abs(a[k] - KEY_VALUE) < TOLERANCE)
{
continue;
}
newList.add(a[k]);
}
System.out.println(newList);
}
}
您可以專門使用DecimalFormat
截斷小數位指定數量的,如果你需要這樣如下。
double x=10.4555600500000;
DecimalFormat df=new DecimalFormat("#.##");
System.out.println(df.format(x));
會返回10.46
。
其他帖子假設你正在處理一個只包含十進制的短字符串。 假設你有大量文字字符串時,您可以使用模式/匹配器類(我在工作,匆忙所以張貼檢查錯誤。)
使用此正則表達式來代替:
/* >1 digits followed by a decimal and >1 zeros. Note capture group on first set of digits. This will only match decimals with trailing 0s, and not 8.0002 */
(\d+)\.0+
替換
/* First capture group */
$1
我不確定的Java的正則表達式規則,所以用這個作爲一個概念來得到你想要的。
是否只想從小數部分刪除零?無論是領先還是落後,還是任何? – Lion 2012-01-05 00:00:39
請跟蹤。 – Confiqure 2012-01-05 00:06:21