Java 如何检查双精度';s的小数部分包含一个特定的数字?

Java 如何检查双精度';s的小数部分包含一个特定的数字?,java,floating-point,double,Java,Floating Point,Double,在Java中,是否可以在小数点后获取double的值 如果小数部分为6(如双倍数=1.6,或2.6或98.6),我希望我的代码生成错误消息。如果不是6,我只想打印“正确” 如何检索double的小数部分?您可以将double设置为下限,从double中减去该值,然后将小数部分留待检查 double number = 2.6; double numberWholePart = Math.floor(number); double numberFractionPart = number - numb

在Java中,是否可以在小数点后获取double的值

如果小数部分为6(如
双倍数=1.6
,或2.6或98.6),我希望我的代码生成错误消息。如果不是6,我只想打印“正确”


如何检索double的小数部分?

您可以将double设置为下限,从double中减去该值,然后将小数部分留待检查

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

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

您可以将双精度设置为最低,从双精度中减去该值,然后保留分数部分以供检查

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
}
试试这个:

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

严格地说:不可能-原因:double永远不能包含精确为.6的小数(没有以.6结尾的数字可以精确地表示为double)

但您可以检查舍入的字符串表示形式是否为。6:

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

严格地说:不可能-原因:double永远不能包含精确为.6的小数(没有以.6结尾的数字可以精确地表示为double)

但您可以检查舍入的字符串表示形式是否为。6:

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

JavaScript和Java不是一回事,要得到十进制值,只需从double中减去取整的整数即可。注意,double和精确值是一种不稳定的情况。考虑使用一个BigDePiple,JavaScript和java不是一回事,为了得到十进制值,你可以简单地从双解中减去舍入的整数。小心,双倍和精确值是不稳定的情况。考虑使用BigDigMall,直接与双比较是不稳定的。我想在上面添加一个公差,以确保不会出现浮点不精确的问题。是的。实际上,2.6-2通常是.5999999998或类似的值。这里的答案在某种意义上是正确的,但由于不精确的问题,它是不可靠的。不要用双人床;使用BigDecimal。与double直接比较是不可靠的。我想在上面添加一个公差,以确保不会出现浮点不精确的问题。是的。实际上,2.6-2通常是.5999999998或类似的值。这里的答案在某种意义上是正确的,但由于不精确的问题,它是不可靠的。不要用双人床;使用BigDecimal。使用
1.59999999999999d
尝试此操作,您将收到消息。。。这可能是OP想要的,但问题并不精确。用
1.599999999999999D试试这个,你会得到消息。。。这可能是OP想要的,但问题并不精确。