2011-04-13 15 views
0

這是我的代碼:準確的十進制格式是什麼?

float result=(float) ((new Float(result1)*0.3)+(new Float(result2)*0.7)); 
String a=dec.format(result); 
vprosvasis.setText(a); 

如果我在我的應用程序使用vprosvasis別的地方,就會有價格a

例如,如果我的結果是12,34a12,3所以vprosvasis12,3如果我寫

float genikosvathmos = ((new Float(vprosvasis.getText().toString()) + 
         new Float(vprosvasis2.getText().toString()) + 
         new Float(vprosvasis3.getText().toString()) + 
         new Float(vprosvasis4.getText().toString()) + 
         new Float(vprosvasis5.getText().toString()) + 
         new Float(vprosvasis6.getText().toString()))/6); 
+6

哇,這是很多完全不必要的拳擊和拆箱。但是,你的問題到底是什麼? – 2011-04-13 17:49:33

+3

我建議你使用'double'而不是'Float',getText()'還不是String嗎? – 2011-04-13 17:53:47

+0

即使沒有必要,也不要使用Float! 使用Double而不是 – Franky 2011-04-13 18:00:46

回答

1

建議使用原語(具體double),而不是對象包裝(除非你有一些需要你沒有在這裏展示)。

然後看Double的javadoc,尤其是靜態實用方法:

http://download.oracle.com/javase/6/docs/api/java/lang/Double.html

double myDouble = Double.parseDouble(myString); 
String s = Double.toString(myDouble); 
1

DecimalFormat目的是數字作爲特定區域設置的方式格式化文本。 (它也可以用於將語言環境特定的數字格式解析爲合適的Number類型。)例如,在美式英語語言環境中,句點('.')用作小數點,而不是逗號(',')。

重要的是要注意,由DecimalFormat生成的String很可能與Float(String)構造函數所需的格式不兼容。 Float消耗的字符串格式不是區域設置特定的;它是一種固定的格式,與Java源代碼中文字爲float的Java語言規範指定的格式相同。

如果您使用金錢進行計算,請不要使用像floatdouble這樣的浮點類型。改爲使用java.math.BigDecimal的實例。此類型執行精確的算術運算,並且在執行舍入時,您可以控制舍入以符合您的會計實踐。

1

像丹尼爾,我不太清楚你想從這篇文章中得到什麼。但我會回答你在標題中以面值問的問題。

您不包括聲明dec的代碼,或者代碼在其上運行的任何代碼,但從上下文來看,它似乎是the DecimalFormat class的實例。如果是這樣,它採取result,這是一個float,做下面的事情:使用從NumberFormat繼承了method format(double number)得到的result

  • String表示

    1. 擴大它long
    2. 存儲結果在a
  • +1

    [''''''''''''''''''''''''''''''重載''double [float]不會被加寬?](http://download.oracle.com/javase/6/docs/api /java/text/NumberFormat.html#format%28double%29) – erickson 2011-04-13 22:50:43

    +0

    @erickson,的確,真的!我的愚蠢的錯字;我甚至連接到正確的方法。現在解決。 – Pops 2011-04-14 00:54:36