划分数字

时间:2017-04-08 22:17:14

标签: java math

使用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

3 个答案:

答案 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个整数,其中一个变量是双精度因此结果将是双精度

其他方式:

  1. 投两个:

    int a = 10;
    int b = 3;
    System.out.println((double)a/b);
    
  2. 将一个整数乘以一个double会产生一个double,因此也可以使用

    int a = 10;
    int b = 3;
    System.out.println(1.0*a/b);
    
  3. 请注意,这不起作用

    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.

你可以做的一个简单的诀窍就是先将nr1nr2中的一个乘以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);