簡體   English   中英

十進制格式到底在做什么?

[英]What is decimal format exactly doing?

這是我的代碼:

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

如果我在應用程序的其他地方使用vprosvasis ,則價格為a

例如,如果我的結果是12,34a將是12,3所以如果我寫, vprosvasis將是12,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);

建議使用基元(特別是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);

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

重要的是要注意,由DecimalFormat生成的String很可能與Float(String)構造函數所需的格式不兼容。 Float使用的字符串格式不是特定於語言環境的; 它是一種固定格式,與Java語言規范中針對Java源代碼中的float文字所指定的格式相同。

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

像Daniel一樣,我不太確定您想從這篇文章中學到什么。 但是,我將以面值回答您在標題中提出的問題。

您不包括聲明dec的代碼,也不包括對其進行操作的任何代碼,但是從上下文來看,它似乎是DecimalFormat的實例。 如果是這樣,它將采用result ,它是一個float ,並執行以下操作:

  1. 擴大到long
  2. 使用從NumberFormat繼承的format(double number)方法獲取resultString表示形式
  3. 將結果存儲在a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM