2011-12-08 88 views
0

我想知道的東西,如果我有一個像200千瓦時/年的變量..什麼是最好的方式放入一個變量。什麼是最好的方式有一個變量千瓦/年

+0

爲什麼'int'或'double'類型不合適? – korifey

+0

您能解釋一下爲什麼'int'或'double'不起作用?您可以存儲該值,並暗示單位(即'kwh/year')。 – dasblinkenlight

+2

你在問什麼是最好的數據類型? –

回答

1

有多種方法可以存儲它;最簡單的方法是使用int,float,double,或者如果您感覺更加精確,請使用BigDecimal

記住使用變量名稱以保持其有意義和容易理解:

例子:

double kilowattsPerYear = 200.00d; 
int kilowattsPerYear = 200; 
float kilowattsPerYear = 200.00f; 
BigDecimal kilowattsPeryear = new BigDecimal("200.00"); //Accepts Several Types 
+0

+1如果確切的精度是必要的或非常大(或小),也可考慮使用['BigDecimal'](http://docs.oracle.com/javase/6/docs/api/java/math/BigDecimal.html)數字是必需的。 – maerics

-2

是不是千瓦時=千瓦特小時。每年使用SI千瓦時是千瓦?

因此一個整數就足夠了。

+0

是的,但不能像200.5千瓦時/年? –

+1

取消單位與它是一個整數值有什麼關係? –

+0

我說過這可能就足夠了 - 如果你正在談論一個家庭每年使用的殺瓦數。至於數據類型 - 取決於你將要用數字做什麼。 –

1

取決於應用程序。

簡單的答案,如果這是作業,就是使用floatdouble。 A float將爲您提供足夠的家庭作業分辨率,並將佔用最少的內存。如果您需要一個非常具體的數字,比如科學應用,您可能需要使用double。變量的大小可能沒有什麼區別,除非你有數百萬個數據點,需要節省內存,並且不需要額外的分辨率。

如果您使用的是int,您將只限於整數數據。但是,如果這是一個計費應用程序,則公司可能會計費,例如,以0.001千瓦時爲增量。如果是這種情況,則將其存儲爲int值的數字0.001千瓦時將消除浮點運算期間可能發生的舍入誤差。這種方法通常用於處理金錢。

1

創建一個自定義的數據類型類似

public class CustUnit{ 

private BigDecimal value; 
private String unit; 

     public CustUnit(String/double/int/long value,String unit){ 
      this.value = new BigDecimal(value); 
      this.unit = unit; 
} 

public String getValue(){ 
return this.value.toString + this.unit;; 
} 

} 

我認爲這將更加靈活。您可以將其用於不同類型的單位和價值。

+0

+1它也可以讓你用單位進行計算,並有一種方法來驗證你在計算中使用了正確的變量/操作(比如10kWh/year + 22cent/kWh而不是*)。 – Stefan

相關問題