2012-10-11 90 views
0

是否有可能在Java中獲得小數點後的double值?如何檢查double的小數部分是否包含特定數字?

如果小數部分是6(如double number = 1.6或2.6或98.6),我希望我的代碼生成錯誤消息。如果不是6,我只想打印「正確」。

如何檢索double的小數部分?

+0

JavaScript和Java是不一樣的東西,得到的十進制值,你可以簡單地減去雙圓形整數。 –

+2

小心,雙打和確切的值是一個不穩定的情況。考慮使用BigDecimal。 –

回答

1
String stringNumber=""+number; 
if(stringNumber.contains(".6"){ 
promt user 
} 
+0

用'1.5999999999999999999D'試試這個,你會得到這個消息......這可能是OP想要的,但問題並不確切。 – DNA

0

您可以放置​​double,從double中減去該值,然後讓剩餘的小數部分用於檢查。

double number = 2.6; 
double numberWholePart = Math.floor(number); 
double numberFractionPart = number - numberWholePart; 

if(numberFractionPart == 0.6) { 
    System.out.println("error!"); 
} 
0

試試這個:

if(number - Math.floor(number) == 0.6){ 
    prompt error 
} 
+6

與雙人直接比較是搖搖欲墜的地面。我想在那裏添加容差,以確保您不會發生浮點不精確問題。 –

+0

是的。實際上,2.6-2通常是.59999999999998或者其他類似的東西。這裏的答案在某種意義上是正確的,但由於不精確問題而不可靠。不要使用雙重的;使用BigDecimal。 – Jay

3

嚴格地說:不可能 - 理由:雙CAN 永遠包含的正是.6分數值(在0.6期末數正好是可表示爲雙)。

但你可以檢查四捨五入字符串表示是0.6:

DecimalFormat f = new DecimalFormat("#0.0"); 
String s = f.format(mydoublevalue); 
if (s.contains(".6")) { 
    // error 
} else { 
    // correct 
} 
相關問題