2013-08-01 130 views
-6

是否可以在Java中更改星號符號(乘法運算符)的含義?Java中星號符號的含義

我想這樣做:

int ex = 600 * 0.98; 

,因爲你不能從雙轉換爲int它失敗。我可以使它成爲一個有效的代碼段嗎?或者星號只有一個意思是不能改變的?

+1

你爲什麼想這麼做? – fge

+1

你想將'*'存儲在一個變量中,並使用它?如果是的話,你爲什麼要這麼做? –

+3

你是什麼意思?整數只是數字。他們不能有星號。 – resueman

回答

2

我只想在數學運算,而不是字符串。

要進行操作,您必須有代碼。這樣做的一種方式是有一種方法像

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位有符號值,沒有別的。

+0

我的意思是如果讓操作員像真正的數學,而不是單詞,我的問題是如何有星號操作。 –

+0

@Mattcejpa真的不清楚你想要什麼。考慮到在你說你不想乘法的問題中,你的意思是「星號操作」是什麼意思?變量'ex'應該包含什麼結果? – JJJ

+0

@Juhana我想在我的遊戲中產生摩擦,所以如果我有一個變量星號0.98它將完成整理操作。在數學課上,他們有100 * 1之類的問題。我只是想在數學運算,而不是一個字符串。 –

0

呃。

簡短的回答是,你不能這樣做。 int類型的變量只能存儲整數值。您分配給int的表達式必須計算爲整數。

你想分配給什麼整數值前?

int ex = 588; // 600 * 0.98 

你在兩個不是乘法的數值之間與星號相關聯的含義是什麼?

如果你想存儲字符數組,然後:

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

除非我誤解你想要什麼,你不能代表與一個int。 600 * 0.98,作爲一個整數,有一個簡單的含義;它只是588,一旦它被分配給一個int,用於獲取它的過程就會丟失。如果您想要表示它實際上是這兩個數字的乘積,而不僅僅是產品,那麼它或者需要存儲爲String,或者您需要查找/創建一個自定義對象,該對象正是您想要的。

看到其他評論,它似乎是你想要的東西是適用於int乘法。如果這是正確的,那麼變量實際上不是你想要的;你應該只使用一種方法。像這樣的東西;

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

爲了避免細微的舍入誤差,我會在投射前加0.5。 –

+0

呃。我個人不會在這裏做四捨五入,而是返回一個浮點或雙精度。如果他們真的想在這個階段引入錯誤,讓調用者輪流。 – cHao