[英]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);
一個快速而骯臟的解決方案是:
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.