我有一些双重数字,例如:3.0
3.1
4.0
5.2
等。
我是否可以判断该号码是否以.0
和3.0
{/ 1}}结尾?
有最好的方法吗?
PS:我将它们转换为String类型,但我不认为这是最好的方法。
4.0
答案 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");
}