2011-04-13 20 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