0

在Java中是否可以在小数点后获得双精度值?

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

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

4

4 回答 4

3

严格来说:不可能 - 原因:double永远不能包含正好为 0.6 的小数值(没有以 .6 结尾的数字完全可以表示为 double)。

但是您可以检查四舍五入的字符串表示是否为 0.6:

DecimalFormat f = new DecimalFormat("#0.0");
String s = f.format(mydoublevalue);
if (s.contains(".6")) {
    // error
} else {
    // correct
}
于 2012-10-11T15:17:56.687 回答
1
String stringNumber=""+number;
if(stringNumber.contains(".6"){
promt user
}
于 2012-10-11T14:43:17.317 回答
0

您可以将双精度数取底,从双精度数中减去该值,然后留下小数部分以供检查。

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

if(numberFractionPart == 0.6) {
    System.out.println("error!");
} 
于 2012-10-11T14:42:31.787 回答
0

试试这个:

if(number - Math.floor(number) == 0.6){
  prompt error
}
于 2012-10-11T14:47:37.343 回答