如何判断一个双数字在Java中是否以.0结尾

时间:2013-12-12 10:45:47

标签: java

我有一些双重数字,例如:3.0 3.1 4.0 5.2等。

我是否可以判断该号码是否以.03.0 {/ 1}}结尾?

有最好的方法吗?

PS:我将它们转换为String类型,但我不认为这是最好的方法。

4.0

3 个答案:

答案 0 :(得分:4)

你可以这样做。

double d = 10.09;
System.out.println(d == Math.floor(d));
// True if it ends with 0, else false

// If you want to return the boolean result
return d == Math.floor(d);

注意:它会一直有效,直到值为double d = 10.000000000000001;。小数中的另一个0最终会得到错误的结果(全部归功于floating point representation inaccuracy)。

答案 1 :(得分:2)

这可以这样做:

double d = 3.0;
System.out.println("Ends with a '.0': " + ((d * 10) % 10 == 0));

如果您设置的值如下:

double d = 2.9999999999999999;

在此行上设置断点,跳过并查找d的值。您会发现该值已经是3.0 因此,之后的任何转换都将使用值3.0。 这就是为什么你不能使用双变量来避免这个问题。

答案 2 :(得分:0)

public static void main(String[]args) {
    double d = 101.3;
    d.toString().endsWith(".0") ? System.out.println("Ends with 0"): System.out.println("Not ends with 0");
}