如何检查双精度小数部分是否包含特定数字?

时间:2012-10-11 14:38:43

标签: java floating-point double

在Java中是否可以获得小数点后的double值?

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

如何检索双精度的小数部分?

4 个答案:

答案 0 :(得分:3)

严格来说:不可能 - 理由:双重永远不会包含精确的.6的小数值(没有以.6结尾的数字可以完全表示为双重)。

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你可以对double进行底层,从double中减去该值,然后将剩余的小数部分留下来进行检查。

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

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

答案 3 :(得分:0)

试试这个:

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