是否可以更改Java中星号符号(乘法运算符)的含义?
我想做这个:
int ex = 600 * 0.98;
它失败了,因为您无法从 double 转换为 int。我可以这样做,以便我能够将双精度转换为整数吗?还是星号只有一个不能改变的含义?
我只想要数学中的操作,而不是字符串。
要进行操作,您必须有代码。一种方法是使用类似的方法
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 位有符号值,仅此而已。
呃。
简短的回答是你不能这样做。一个类型的变量int
只能存储一个整数值。您分配给 int 的表达式必须计算为整数。
你想给 ex 分配什么整数值?
int ex = 588; // 600 * 0.98
您将两个不是乘法的数值之间的星号关联起来是什么意思?
如果要存储字符数组,则:
char[] ex = "600 * 0.98".toCharArray();