为什么Float返回不同的值,我该如何解决它,Java

时间:2015-01-24 04:11:27

标签: java android type-conversion

我正在使用Float来节省价值。但是当我将它保存七次以上然后在Float中输入值时,它会返回不同的格式值,例如..

Float f=1234567.98 

然后float返回我的字符串

1.23457e+06

这是什么意思,我该如何解决它。请帮我解决这个问题 在此先感谢

2 个答案:

答案 0 :(得分:2)

这意味着两件事之一。默认情况下,您首选的打印方法仅显示一定数量的数字,或者您要求的精确度高于Float提供的数字。 wikipedia page for single precision floats表示您可以准确地表示6-9个十进制数字。所以这可能是你的问题。您应该可以使用Double来存储您的值并使用DecimalFormat来自定义输出来解决问题。

答案 1 :(得分:1)

格式化小数使用: http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

在这种情况下,您想要的格式为###.## 使用它的一个例子是

float f = 123456.78f;
DecimalFormat format = new DecimalFormat("###.##');
String formatted = format.format(f);

请注意,如果您将其用于货币计算,则应使用BigDecimal代替。浮点数是存储实数的有效方式,但它们只能代表很多。以下是使用BigDecimal的示例:

BigDecimal bd = new BigDecimal(123456.78f);
bd = bd.add(3.4f);
bd = bd.divide(4.3f);//this division with floats may have returned an inexact answer
bd.setScale(2);//Makes sure we only care about 2 decimal places
String strValue = bd.toString();