我正在使用Float
来节省价值。但是当我将它保存七次以上然后在Float中输入值时,它会返回不同的格式值,例如..
Float f=1234567.98
然后float返回我的字符串
1.23457e+06
这是什么意思,我该如何解决它。请帮我解决这个问题 在此先感谢
答案 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();