-7

是否可以更改Java中星号符号(乘法运算符)的含义?

我想做这个:

int ex = 600 * 0.98;

它失败了,因为您无法从 double 转换为 int。我可以这样做,以便我能够将双精度转换为整数吗?还是星号只有一个不能改变的含义?

4

2 回答 2

3

我只想要数学中的操作,而不是字符串。

要进行操作,您必须有代码。一种方法是使用类似的方法

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 回答
0

呃。

简短的回答是你不能这样做。一个类型的变量int只能存储一个整数值。您分配给 int 的表达式必须计算为整数。

你想给 ex 分配什么整数值?

int ex = 588;  // 600 * 0.98

您将两个不是乘法的数值之间的星号关联起来是什么意思?

如果要存储字符数组,则:

char[] ex = "600 * 0.98".toCharArray();
于 2013-08-01T18:35:55.843 回答