-1

こんにちは、私は大学で Java を勉強しています。BMI を計算するコードを作成しました。num1 はキログラム、num2 はセンチメートル((num1/num2)/num2)*10000; のようになります。先生にこの式を見せたら、それは間違っていて、正しいのはnum1/((num2*num2)/10000);だと言われました。コードの両方の行をテストしたところ、同じ結果が得られましたが、AxB と BxA のように両方の行が同じであることを証明する必要があると彼は言いましたが、両方が同じであることを証明する方法は見つかりませんでしたが、それらがどのように同じになるかについての考えがあります。私の質問は、それらは両方とも同じですか?

体重が 70 KG で身長が 175 cm だった場合、22.9 の線上に何かが表示されます (これは私の方程式によるものであることを心に留めておいてください)。私の先生の場合も同じです。しかし、彼はそれらが同じであるとは信じていません。これは私のコードです:

import javax.swing.*; java.util.Scanner をインポートします。

クラスりんご {

public static void main (String args[]) {
    String fsum; /* this is a variable declaration*/
    String sum; /* this is a variable declaration*/
    double answer; /* this is a variable declaration*/
    double num1, num2; /* this is a variable declaration*/
    String anything; /* this is a variable declaration*/
            Scanner Tahmid = new Scanner (System.in);/*Scanner Variable*/
    System.out.println("This program was created by Tahmid Ahmed on 01/10/2013\nThis program would allow you the user to be able to calculate your BMI");
    System.out.println("To continue please click enter");/*Output*/
    anything = Tahmid.nextLine();/*Input as a break*/
    fsum=JOptionPane.showInputDialog("Please enter weight in Kilograms (KG) "  ); /*Popup box to allow weight to be entered*/
    sum=JOptionPane.showInputDialog("Please enter height in Centimetres (CM) ");/*Popup box to allow height to be entered*/
    num1 = Double.parseDouble(fsum);/*Conversion of String into Double*/
    num2 = Double.parseDouble(sum);/*Conversion of String into Double*/

    answer = num1/((num2*num2)/10000);/*<<<<<<<<-----My teachers Equation*/ /*My Equation ---- >>>>>> ((num1/num2)/num2)*10000       */
    if (answer<=18){
    JOptionPane.showMessageDialog(null, "Your total BMI levels are: " + answer, "You're underweight! Eat some more!", JOptionPane.INFORMATION_MESSAGE);
        }
    else if(answer>=25){
    JOptionPane.showMessageDialog(null, "Your total BMI levels are: " + answer, "You're overweight now bro! Eat Less!", JOptionPane.INFORMATION_MESSAGE);   }

    else if(answer<25) {
    JOptionPane.showMessageDialog(null, "Your total BMI levels are: " +answer, "You're the perfect weight! Stay that way :)", JOptionPane.INFORMATION_MESSAGE);}


}

}

4

2 に答える 2

2

これらは数学的には同等ですが、浮動小数点では同等ではありません。あなたの先生は、最大の精度を達成するために、すべての乗算がすべての除算の前に行われるべきであることを強調しようとしています. かっこで囲まれてnum2*num2いるため、最初に計算されます。

于 2013-10-01T10:47:57.537 に答える