是否可以在Java中更改星号符号(乘法运算符)的含义?
我想这样做:
int ex = 600 * 0.98;
它失败了,因为你无法从double转换为int。我可以使它成为有效的代码吗?或星号只有一个无法改变的含义?
答案 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();