-7

Javaでアスタリスク記号(乗算演算子)の意味を変更することは可能ですか?

私はこれをしたい:

int ex = 600 * 0.98;

double から int に変換できないため、失敗します。double を整数に変換できるようにすることはできますか? それとも、アスタリスクには変更できない 1 つの意味しかありませんか?

4

2 に答える 2

3

文字列ではなく、数学で操作が必要です。

操作を行うには、コードが必要です。これを行う1つの方法は、次のようなメソッドを持つことです

public static double ex(double factor) {
    return factor * 0.98;
}

または因子がフィールドの場合

private double factor = 600;

public double ex() {
    return factor * 98 / 100;
}

public static void main(String... ignored)  {
    Main m = new Main();
    System.out.println("factor: "+m.factor+" ex: "+ m.ex());
    m.factor = 700;
    System.out.println("factor: "+m.factor+" ex: "+ m.ex());
}

版画

factor: 600.0 ex: 588.0
factor: 700.0 ex: 686.0

ご覧のとおり、ex()使用するたびに再評価されます。

なぜ私は* 98 / 100?各値を正確に表すことができるため、これを行いますが、0.98 は正確に表すことができず、小さなエラーが発生する可能性があります。

System.out.println(new BigDecimal(0.98));

0.98 に最も近い表現可能な値を出力します

0.979999999999999982236431605997495353221893310546875

テキストを保存したい場合は、次のようにする必要があります

String ex = "600 * 0.98";

int値は、32 ビットの符号付きの値である整数を格納するためのものであり、他には何もありません。

于 2013-08-01T18:34:13.110 に答える