我有这样的代码,我应该从中得到一个值:
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
float a=4, b=8 ;
int i=2, j=16 ;
double sol1, sol2, sol3, sol4;
sol1=(a+2*b/j);
sol2=(a/(b-4)+i);
sol3=-(b-i/j);
sol4=(i*a+j/b);
System.out.println(sol1);
System.out.println(sol2);
System.out.println(sol3);
System.out.println(sol4);
}
}下面是解决方案的Java小提琴
5
3
-8
10但是在sol3中,我的计算值不是-8,它是-7.875,所以它把它取为-8.0。
我试图将sol3单独分解为单独的执行就像在这把小提琴里。
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
float a=4, b=8 ;
int i=2, j=16 ;
double sol1, sol2, sol3, sol4;
sol1=-i/j;
sol2=b+sol1;
sol3 = -sol2;
System.out.println(sol1);
System.out.println(sol2);
System.out.println(sol3);
}
}仍然给我-8.0,在计算器上是-7.875。我知道太容易了,但我搞不懂为什么?
发布于 2016-01-27 07:19:09
sol1=-i/j;值为0,因为iint。将其中一个更改为浮动或加倍,以执行浮点除法。
发布于 2016-01-27 07:20:27
变量i和j是ints,表达式i/j使用整数求值,因此2/16的结果为零。试一试
sol1 = -((double)i) / j;发布于 2016-01-27 07:21:04
sol3=-(b-i/j);您必须显式地将解决方案转换为double或float。因为i和j都是int类型的,所以您必须将
sol3=-(b-(double)(i/j));https://stackoverflow.com/questions/35030982
复制相似问题