是否可以在Java中更改星號符號(乘法運算符)的含義?Java中星號符號的含義
我想這樣做:
int ex = 600 * 0.98;
,因爲你不能從雙轉換爲int它失敗。我可以使它成爲一個有效的代碼段嗎?或者星號只有一個意思是不能改變的?
是否可以在Java中更改星號符號(乘法運算符)的含義?Java中星號符號的含義
我想這樣做:
int ex = 600 * 0.98;
,因爲你不能從雙轉換爲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位有符號值,沒有別的。
我的意思是如果讓操作員像真正的數學,而不是單詞,我的問題是如何有星號操作。 –
@Mattcejpa真的不清楚你想要什麼。考慮到在你說你不想乘法的問題中,你的意思是「星號操作」是什麼意思?變量'ex'應該包含什麼結果? – JJJ
@Juhana我想在我的遊戲中產生摩擦,所以如果我有一個變量星號0.98它將完成整理操作。在數學課上,他們有100 * 1之類的問題。我只是想在數學運算,而不是一個字符串。 –
呃。
簡短的回答是,你不能這樣做。 int
類型的變量只能存儲整數值。您分配給int的表達式必須計算爲整數。
你想分配給什麼整數值前?
int ex = 588; // 600 * 0.98
你在兩個不是乘法的數值之間與星號相關聯的含義是什麼?
如果你想存儲字符數組,然後:
char[] ex = "600 * 0.98".toCharArray();
除非我誤解你想要什麼,你不能代表與一個int。 600 * 0.98
,作爲一個整數,有一個簡單的含義;它只是588,一旦它被分配給一個int,用於獲取它的過程就會丟失。如果您想要表示它實際上是這兩個數字的乘積,而不僅僅是產品,那麼它或者需要存儲爲String
,或者您需要查找/創建一個自定義對象,該對象正是您想要的。
看到其他評論,它似乎是你想要的東西是適用於int乘法。如果這是正確的,那麼變量實際上不是你想要的;你應該只使用一種方法。像這樣的東西;
int applyFriction(int value){
return (int)(value * .98);
}
爲了避免細微的舍入誤差,我會在投射前加0.5。 –
呃。我個人不會在這裏做四捨五入,而是返回一個浮點或雙精度。如果他們真的想在這個階段引入錯誤,讓調用者輪流。 – cHao
你爲什麼想這麼做? – fge
你想將'*'存儲在一個變量中,並使用它?如果是的話,你爲什麼要這麼做? –
你是什麼意思?整數只是數字。他們不能有星號。 – resueman