Java中星号符号的含义

时间:2013-08-01 18:31:36

标签: java variables

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

我想这样做:

int ex = 600 * 0.98;

它失败了,因为你无法从double转换为int。我可以使它成为有效的代码吗?或星号只有一个无法改变的含义?

3 个答案:

答案 0 :(得分:2)

  

我只想在数学中使用OPERATION,而不是字符串。

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

这样的方法
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位有符号值,没有别的。

答案 1 :(得分:2)

除非我误解你想要的东西,否则你不能用int表示。 600 * 0.98,作为一个int,具有简单的含义;它只是588,一旦它被分配给一个int,用于获取它的过程就会丢失。如果你想表示它实际上是这两个数字的乘法,而不仅仅是产品的乘法,那么它需要存储为String,或者你需要找到/创建一个自定义对象,它代表你究竟是什么想。

看到其他评论,看起来你想要的是在int上应用乘法的东西。如果这是对的,那么变量真的不是你想要的;你应该只使用一种方法。像这样的东西;

int applyFriction(int value){
    return (int)(value * .98);
}

答案 2 :(得分:0)

唔。

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

您希望将哪个整数值分配给ex?

int ex = 588;  // 600 * 0.98

您在两个不是乘法的数值之间与星号相关联的含义是什么?

如果你想存储一个字符数组,那么:

char[] ex = "600 * 0.98".toCharArray();