我想解析字符串来浮动,但它给了我一些不同的输出。 假设我的代码:浮点到字符串转换输出不同
String a = "111111111111111111111.23";
Float f = Float.parseFloat(a);
System.out.println(f);
它给了我这样的:1.1111111E20
以简单的方式,它给了我111111110000000000000
我如何显示的所有数据?我不想截断输入数据。
我想解析字符串来浮动,但它给了我一些不同的输出。 假设我的代码:浮点到字符串转换输出不同
String a = "111111111111111111111.23";
Float f = Float.parseFloat(a);
System.out.println(f);
它给了我这样的:1.1111111E20
以简单的方式,它给了我111111110000000000000
我如何显示的所有数据?我不想截断输入数据。
如何获取整个数据。不想截断输入数据。
然后无论你做什么,都不要使用float
。在至少使用double
,但即使double
将与该值作为IEEE-754双精度浮点数斗争在基座10中表达时对于大于精度,看BigDecimal
仅精确到大致 15位数字。
'BigDecimal'是否支持浮动? –
@ user3145373ツ:'BigDecimal'支持浮点运算,如果这就是你的意思。 –
@ user3145373ツ你可以在这里检查:[JavaDoc](https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html) – Tom
BigDecimal
从不自动舍入或失去精确度,因此它在计算中非常受欢迎。
A float
是以32位表示的十进制数值类型。
A double
是一个64位十进制数,因此它可以表示比浮点数大的值。
可以使用BigDecimal
public static void main(String[] args) {
String a = "111111111111111111111.23";
BigDecimal f = new BigDecimal(a);
System.out.println(f);
}
输出
111111111111111111111.23
我试过'BigDecimal m = new BigDecimal(a);',它给了我'111111111111111110000'。是否预计? –
@ user3145373ツ发布您的代码与输出 –
@ user3145373ツ否,不是预期的。你试过了吗?*正如这里所显示的那样?使用您使用的代码以及输入和结果更新您的问题。 –
http://stackoverflow.com/questions/703396/how-to-nicely-format-floating-numbers-to- string-without-unnecessary-decimal-0 – Reg
使用Double或BigDecimal取而代之,float具有较小大小的限制(4字节 – Hiru
提示:请使用计算机系统更多地了解数字的表示形式。就像“代表数据一样”......你应该明白**这意味着什么。因为你不是新手:在发布问题之前,你为什么不做前期研究? – GhostCat