我有这个公式
Math.sqrt( 2 * Math.sqrt(m) + 1 / 4 ) - 1 / 2
在函数中,其中 m 是 long
类型的输入。
我需要检查这个表达式的结果是整数还是小数,如果是整数则返回结果,如果是小数则返回-1。
因此,我决定将结果放入 double
中:
double n = Math.sqrt( 2 * Math.sqrt(m) + (double)1 / 4 ) - (double)1 / 2;
我尝试了一些在这里找到的解决方案,例如:
使用模运算符: if ( n % 1 == 0 )
或者使用Math.ceil和floor函数
但是当表达式结果的小数部分非常接近 1(例如 .98999)时,它们都不起作用...
例如,当 m = 2084574945554272657 时,结果应为 53735.96813...
但它是四舍五入的,实际上 n 中存储的是 53736.0,而函数的答案是 n 是整数,这是不正确的。
有没有办法可以正确检查结果?
最佳答案
试试这个:
double toCheck = 277.76;
if((toCheck-(int)toCheck)!=0)
System.out.println("decimal value");
else
System.out.println("integer value);
关于java - 检查计算结果是整数还是小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956509/