2016-02-21 66 views
0

我有兩個變量都是浮點數,我希望除法返回整數。我已經嘗試了一些東西,比如Math.Round()並將其乘以1,然後除以1,我似乎無法使其工作。我怎樣才能分兩個浮點數,並得到一個整數

import java.util.Scanner; 

    public class Calculator 
    { 
    public static void main (String[] args) 
    { 

     float firstNumber; 
     float secondNumber; 
     char operator; 
     float answer; 
     float answerRemainder; 
     Scanner input = new Scanner (System.in); 


     System.out.print("Enter your first number"); 
     firstNumber = input.nextInt(); 
     System.out.print("Enter the operator (s for subtraction, a for addition, m for multiplication, d for division, r for division with a remainder))\n"); 
     operator = input.next().charAt(0); 
     while (operator != 's' && operator != 'a' && operator != 'm' && operator != 'd' && operator != 'r') 

     { 
      System.out.print("\nYou have entered an incorrect character. Enter the operator (s for subtraction, a for addition, m for multiplication, d for division, r for division with a remainder)\n"); 
      operator = input.next().charAt(0); 
     } 

     System.out.print("Enter your second number"); 
     secondNumber = input.nextInt(); 

     if (operator == 's') 

     { 
      System.out.print(firstNumber +" - "+secondNumber+" = "+(firstNumber - secondNumber)); 
     } 

     else if (operator == 'a') 

     { 
      System.out.print(firstNumber +" + "+secondNumber+" = "+(firstNumber + secondNumber)); 
     } 

     else if (operator == 'm') 

     { 
      System.out.print(firstNumber+" * "+secondNumber+" = "+(firstNumber * secondNumber)); 
     }  

     else if (operator == 'd') 

     { 
      System.out.print(firstNumber+"/"+secondNumber+" = "+(firstNumber/secondNumber)); 
     } 

     else if (operator == 'r') 

     { 
      answerRemainder = (firstNumber/secondNumber); 
      System.out.print(firstNumber+"/"+secondNumber+" = "+(answerRemainder)+" with a remainder of "+(firstNumber % secondNumber)); 
     } 
    } 
    } 

所以我想最後一行的「answerRemainder」是一個整數

+0

用'Math.round'倒圓的結果。或'Math.floor'。或'Math.ceiling'。取決於你想要的。 –

+0

將你的分區轉換爲'int',就像'answerRemainder =(int)(firstNumber/secondNumber);' – aribeiro

+0

@aribeiro將被截斷 - 操作系統可能不想這樣做。 –

回答

1

你可以投你的師intanswerRemainder = (int) (firstNumber/secondNumber);

然而,正如所指出的問題的意見,做以上將導致精度的損失。

沒有任何演員,有firstNumber = 3.4fsecondNumber = 1.2ffirstNumber/secondNumber的結果將是2.8333333

使用該強制轉換,結果將是2.0,因爲int是一個沒有精度的數字,結果會被截斷並且精度被丟棄。

四捨五入的結果向上,使用ceilingMath.ceil),結果將是圍捕,你會得到整數2.8333333,這將是3.0

四捨五入的結果向下,用floorMath.floor),結果將是捨去,你會得到整數2.8333333之前,這將是2.0

注意:兩個變量值的f是必要的,因爲沒有它,默認情況下,Java的將其解釋值作爲double

+0

@BoristheSpider,我很抱歉沒有完成我的答案。希望編輯可以澄清一切。 – aribeiro

相關問題