Javaでアスタリスク記号(乗算演算子)の意味を変更することは可能ですか?
私はこれをしたい:
int ex = 600 * 0.98;
double から int に変換できないため、失敗します。double を整数に変換できるようにすることはできますか? それとも、アスタリスクには変更できない 1 つの意味しかありませんか?
文字列ではなく、数学で操作が必要です。
操作を行うには、コードが必要です。これを行う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 ビットの符号付きの値である整数を格納するためのものであり、他には何もありません。