簡體   English   中英

If Else的條件(帶小數位數)

[英]conditions for If Else (with number of decimal places)

有沒有一種方法可以執行代碼,具體取決於數字中有多少個小數位。 例如,如果double僅為2.0,我希望將其轉換為整數,但是如果它為2.43426,則希望將其保留為double。 謝謝!

不確定,但是會:

double d = 2.0;

if ((long) d == d) {
    // then
}

為你工作? 那只會在特定情況下回答您的問題。

您可以指定精度並進行如下轉換:

double precision = 1e-10;

int rounded = Math.round(x);
if (Math.abs(x-rounded) > precision) System.out.print(x)
else System.out.print(rounded);
  1. 將double轉換為String
  2. 使用正則表達式,找到小數點,然后獲取小數點后的字符數。
  3. 在if-else中使用它

一個快速而骯臟的解決方案是:

double foo = 2.43426;
int count = String.valueOf(foo).split(".")[1].toCharArray().length;
if(count > 1){
    // do stuff
}

如果您要這樣做的話:

我將它們轉換為字符串並將其寫出,所以我希望它說3而不是3.0,而不是3而不是3.4324。

然后“正確”的方法是使用DecimalFormat

DecimalFormat fmt = new DecimalFormat("0.#");
fmt.setMaximumFractionDigits(Integer.MAX_VALUE);
assert "3".equals(fmt.format(3.0));
assert "3.4324".equals(fmt.format(3.4324));

但是,它確實定位了小數點分隔符(我得到的是逗號而不是點)。 如果存在問題,則可以調用fmt.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ROOT))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM