是否有可能在Java中獲得小數點後的double值?如何檢查double的小數部分是否包含特定數字?
如果小數部分是6(如double number = 1.6
或2.6或98.6),我希望我的代碼生成錯誤消息。如果不是6,我只想打印「正確」。
如何檢索double的小數部分?
是否有可能在Java中獲得小數點後的double值?如何檢查double的小數部分是否包含特定數字?
如果小數部分是6(如double number = 1.6
或2.6或98.6),我希望我的代碼生成錯誤消息。如果不是6,我只想打印「正確」。
如何檢索double的小數部分?
String stringNumber=""+number;
if(stringNumber.contains(".6"){
promt user
}
用'1.5999999999999999999D'試試這個,你會得到這個消息......這可能是OP想要的,但問題並不確切。 – DNA
您可以放置double,從double中減去該值,然後讓剩餘的小數部分用於檢查。
double number = 2.6;
double numberWholePart = Math.floor(number);
double numberFractionPart = number - numberWholePart;
if(numberFractionPart == 0.6) {
System.out.println("error!");
}
試試這個:
if(number - Math.floor(number) == 0.6){
prompt error
}
與雙人直接比較是搖搖欲墜的地面。我想在那裏添加容差,以確保您不會發生浮點不精確問題。 –
是的。實際上,2.6-2通常是.59999999999998或者其他類似的東西。這裏的答案在某種意義上是正確的,但由於不精確問題而不可靠。不要使用雙重的;使用BigDecimal。 – Jay
嚴格地說:不可能 - 理由:雙CAN 永遠包含的正是.6分數值(在0.6期末數正好是可表示爲雙)。
但你可以檢查四捨五入字符串表示是0.6:
DecimalFormat f = new DecimalFormat("#0.0");
String s = f.format(mydoublevalue);
if (s.contains(".6")) {
// error
} else {
// correct
}
JavaScript和Java是不一樣的東西,得到的十進制值,你可以簡單地減去雙圓形整數。 –
小心,雙打和確切的值是一個不穩定的情況。考慮使用BigDecimal。 –