使用Java中的算术运算符对两个数字进行划分。
Scanner scan = new Scanner(System.in);
System.out.print("Write a number: ");
String mataett = scan.next();
System.out.print("Write a number: ");
String matatva = scan.next();
int nr1 = Integer.parseInt(mataett);
int nr2 = Integer.parseInt(matatva);
System.out.println(Math.round(nr1 / nr2*10.0)/10.0);
当我使用73/27
运行时,我会得到答案2.0
,但我想得的是答案2.7
答案 0 :(得分:0)
更改行
System.out.println(Math.round(nr1 / nr2*10.0)/10.0);
到线
System.out.println(Math.round(nr1 / ((double)nr2)*10.0)/10.0);
因为当你除以两个整数时,答案总是一个整数,它总是更圆((int)2.9 = 2和(int)3.1 = 3)。投入双打然后分开以获得正确的答案。
让我们看一下以下代码:
int a = 10;
int b = 3;
System.out.println(a/b);
这将打印3,它不会打印3.3333333 ...这是因为当分割整数时,结果总是一个整数并且总是向下舍入。有几种方法可以解决这个问题
int a = 10;
double b = 3;
System.out.println(a/b);
这将打印3.3333333 ...因为我们不再划分2个整数,其中一个变量是双精度因此结果将是双精度
其他方式:
投两个:
int a = 10;
int b = 3;
System.out.println((double)a/b);
将一个整数乘以一个double会产生一个double,因此也可以使用
int a = 10;
int b = 3;
System.out.println(1.0*a/b);
请注意,这不起作用
int a = 10;
int b = 3;
System.out.println(a/b * 1.0);
这不起作用,因为除法将在乘法之前计算,你将得到结果3.0。
答案 1 :(得分:0)
当我用73/27运行时,我得到答案2.0,但我想要的是什么 得到的答案是2.7
您获得意外结果的原因是因为当您除以整数时,结果始终是整数,这意味着小数点后的任何数字都会被截断。
nr1 / nr2 // <-- this part within the calculation is causing the problem.
你可以做的一个简单的诀窍就是先将nr1
或nr2
中的一个乘以1.0
加上double
,然后再产生一个双重值,这样你就可以保持精确度,因为您现在除int
而不是System.out.println(Math.round((1.0 * nr1) / nr2 * 10.0)/10.0);
。
示例:强>
1.0
注意public class MyWebTests {
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.standaloneSetup(new AccountController()).build();
}
// ...
}
答案 2 :(得分:-2)
Try the following:
double nr1 = Integer.parseInt(mataett);
double nr2 = Integer.parseInt(matatva);